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

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

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

答え1

他にもたくさんのプロパティがありますrsync前の回答で述べられているよりも多くの情報があります。自分で調べてみてください。

man rsync

しかし、あなたの問題に対しては、次のことをお勧めします:

rsync -a --delete X Y

この方法では、受信者 (Y) は X にないファイルをすべて削除します。ただし、正しく実行してください。ルートとして誤って使用すると、システムが簡単に停止する可能性があります... :)

答え2

を見てみましょうrsync(1)ほぼあなたが望む通りのことを実現することを目的としています。

rsync -av X Y

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

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

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

答え3

次のようなものを使うといいでしょうフィタス/ザロハ.shまず、必要な同期アクションを計算し、それを提示し、確認を求めてから実行します。

$ Zaloha.sh --sourceDir="X" --backupDir="Y"

答え4

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

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

関連情報