web-dev-qa-db-ja.com

一部の2つのフォルダーに対して、変更/更新されたファイルのみを再帰的に追加/置換するにはどうすればよいですか?

だから私は現在次のようなことをしています:

rm -rf ../../../$CLOUD_INSTALL_SUBDIR/lib_boost
mkdir ../../../$CLOUD_INSTALL_SUBDIR/lib_boost
cp -r ../../../$BOOST_ROOT_DIR/$BOOST_INSTALL_SUBDIR/lib/* ../../../$CLOUD_INSTALL_SUBDIR/lib_boost/

それでは、2つのフォルダー間で更新されたファイルのみを更新/削除/追加する方法がわかりません(デモでは、最新のものが含まれるフォルダーがあります../../../$BOOST_ROOT_DIR/$BOOST_INSTALL_SUBDIR/lib/および古くなっている可能性のあるものを含むフォルダー../../../$CLOUD_INSTALL_SUBDIR/lib_boost)?

5
myWallJSON

Rsyncはあなたの最新の親友です。

rsync -av original/folder/ new/folder/

末尾のスラッシュは両方で重要です。最初のフォルダを除外すると、そのフォルダが独自のフォルダとしてnew/folder/にコピーされます。権限やタイムスタンプなどを保持するには、-aフラグを使用することをお勧めします。

Rsyncはまた、構造を複製するために必要に応じてディレクトリを自動的に作成します。

6
laebshade

そのためにrsyncを使用できます。例では、次のようになります。

rsync -va ../../../$CLOUD_INSTALL_SUBDIR/lib_boost/ ../../../$CLOUD_INSTALL_SUBDIR/lib_boost

ここで、-vオプションは詳細モードを有効にし、-aはアーカイブモードを有効にします

あなたはその マニュアルページ でrsyncについてもっと読むことができます

1
Sergei Lomakov