web-dev-qa-db-ja.com

フォルダ構造を維持しながら変更されたファイルをコピーする方法

PHPプロジェクトのファイルに多くの変更を加えましたが、FileZilla FTPを介してそれらの変更をサーバーにプッシュしたいと思います。すべてのファイルをプッシュするのではなく、ファイルのみを検索したいと思います。過去14日間に変更されたものを、フォルダー構造を保持したまま/ModifiedFilesフォルダーにコピーします。この方法で、/ModifiedFilesフォルダーの内容をFileZillaにドラッグするだけで、すべての適切なフォルダに必要なファイル。

Windowsを使用している場合は、このコード行を実行すると、必要な処理が実行されます。

xcopy RUF_Donation_Web ModifiedFiles /S /V /I /R /D:02-09-2016

Mac(OS X Yosemite)のBashターミナルでこれを実現するにはどうすればよいですか?

3
Tod Birdsall

これはcpioまたはpaxの典型的な仕事です。

find . -type f -mtime -14 -print0 | pax -0 -rw /ModifiedFiles

-lオプションを使用して、コピーの代わりにリンクを作成することもできます。 Debianのpaxコマンドでは正しく機能しませんが、OS/Xのコマンドでも同じ問題が発生しない可能性があります。

cpiopaxの祖先)でも同様のことができますが、OS/Xでのcpioの実装は-0 /をサポートしていないようです。 --nullオプション。任意のファイル名を許可します。ファイル名に改行文字が含まれていないことがわかっている場合でも、次のことができます。

find . -type f -mtime -14 | cpio -dp /ModifiedFiles

Debian(GNU)バージョンとOS/Xバージョンのcpioには、コピーの代わりにリンクを作成するための-lオプションもあります。 (そしてDebianの1つは正しく動作しているようです)。

5

実装しようとしているのは、rsyncでのビルドです。 rsync -a /source /destするだけです。これを簡単なスクリプトに入れて、cronジョブとして追加できます。コピーされたもののログを保持したい場合は、--log-file=[File]オプションを追加できます。詳細については、こちらをご覧ください: http://linux.die.net/man/1/rsync

2
Svetlin Tonchev