bashの2つのローカルフォルダーを同期する


23

ホームディレクトリに1つの大きなフォルダー「X」があり、これの古いコピーがフラッシュドライブにあります。Y。の類似物は何ですか、rm Y; cp X Y既存のファイルを上書きしませんか?

回答:


26

前の回答で言及したよりも多くのプロパティがrsyncにあります。あなたはそれらを自分で調べる必要があります:

man rsync

しかし、あなたの問題のために私はお勧めします:

rsync -a --delete X Y

このようにして、受信者(Y)は、Xにないファイルをすべて削除します。ただし、正しく実行してください。rootがシステムを簡単に殺してしまう可能性があるため、誤って使用されます...


1
これには非常に注意する必要があることに同意します。コマンドに--dry-runを追加して、実際に変更を加えずに何が起こるかを確認してください。うまくいけば--dry-run
squarecandy

到達するまでに少し時間がかかった小さな修正:rsync -a --delete X/ Y。Xの後の小さなスラッシュは、Xを意図したとおりに機能させたので、他の人にも役立つ可能性があります。ここで説明:abbeyworkshop.com/howto/unix/nix_rsync/index.html
Shovalt

15

rsync(1)を見てください。それはあなたが望むことをほとんど正確に行うことを意図しています。

rsync -av X Y

独自のプロトコルまたはsshを介したリモートコピーをサポートしていますが、ローカルでも使用できます。

正確な動作に応じて、--updateオプションを渡すこともできます。これにより、ターゲット上にすでに存在し、ソース内のファイルよりも新しいファイルを上書きしないようにrsyncに指示します。

余分なファイル(つまり、Yには存在するがXには存在しないファイル)を削除する場合は、--deleteオプションを追加できます。


ただし、Xで削除するよりも、ファイルを削除しませんrm Y; cp X Y

Xから削除されたファイルを削除するには、-deleteオプションを使用します。
csonuryilmaz

0

次のコマンドを使用して、rsnycを使用してみてください。

rsync -avzu /home/x /y

-u =変更された場合、宛先のファイルを上書きしない


ただし、Xで削除するよりも、ファイルを削除しませんrm Y; cp X Y

0

オプション-u(更新)で探している機能のいくつかは、実際にはこのオプションに存在すると思います。

「--ignore-existing」-受信側に存在するファイルの更新をスキップします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.