2017-06-29 3 views
0

外部ハードドライブに接続されたラズベリーパイシステムで自動バックアップを設定しようとしています。2つのディレクトリを比較する方法と、完全一致の場合は、2番目のディレクトリを削除します。

基本的に、私は、フォルダを共有しているし、彼らは私がその後、外付けハードドライブが接続され、

/media/external/Comp1 
/media/external/Comp2 
下の2つのフォルダが搭載されています

/mnt/Comp1 

/mnt/Comp2 

下RPI上のSamba経由でマウントされています

次に、/ mnt/Comp1 *から/ media/external/Comp1/*への再帰コピーを実行し、Comp2と同様の再帰コピーを実行します。私は(それが5台のコンピュータの合計となりますので)コピーの最後であると、私はすべてのファイルが転送されていることを確認したいと思います助けを必要とし、彼らがしたとあれば、すべてがオンになって何


外部から、ローカルマシンから自動的に削除することができます。私はこれが危険であると理解しています。なぜなら、必然的にバックアップされないかもしれないものが削除されるからです。しかし、どこから始めるべきかを知る助けが必要です。

私はフォルダの内容を確認する上で多くの情報を見つけた、と私はdiffコマンドを使用することができます知っているが、私は、この擬似コードでそれを使用する方法がわからない

use diff on directories /mnt/Comp1/ and /media/external/Comp1 

if no differences, proceed to delete /mnt/Comp1/* recursively 

if differences, preferably move the files not saved to /media/external/Comp1 

repeat checking for differences, and deleting if necessary 
+2

もしdiff -q/path/dir1/path/dir2を試しましたか?次にrm -r/path/dir2; 'dir1'と' dir2'が同じなら 'dir2'を削除する' 'man diff''はオプションを説明するのにはかなり良いですが、違いが見つかった場合は' else'を使って移動を行います –

+0

私はローカルコンピュータ上でそれをテストしていたので、これはシステム自体でテストしますが、これはうまくいくようですが、fiとは何ですか?また、違いがなければ、コピーコマンドは cp -n/path/dir1/*/path/dir2/*? – rAFTA

+1

これは解決された問題で、 'rsync'を使用してください。 – chepner

答えて

0

てみてください次のようなものがあります。

diff -r -q d1/ d2/ >/dev/null 2>&1 

チェック戻り値は$ですか? 戻り値が1の場合、d2を削除してください。

関連する問題