web-dev-qa-db-ja.com

Linuxはrobocopyと同等ですか?

ちょっと面白いです。LinuxのコマンドラインツールがWindowsのツールよりもはるかに優れている点はたくさんありますが、同等のものを見つけられなかったのは robocopy です。 Robocopyはcpよりもはるかに用途が広く、Linuxツールを使って自分のやりたいことをどのように行うかわかりません。

特定のユースケースでは、ほとんど同じようなファイルを含む2つのディレクトリがありますが、1つには新しいソースファイルがあり、もう1つには他のディレクトリにはないコンテンツファイルがあり、おそらく新しいソースファイル(ウェブサイト用)があります。後者のディレクトリから前者にファイルをコピーし、新しいコンテンツファイルなどを追加しますが、宛先ディレクトリの新しいファイルは上書きしません。

私はLinuxでこれを30分程度行う方法を理解しようとしましたが、おそらくbashスクリプトなど、自分がやりたいことを行うには何かを学ばなければならないと決めたので、robocopyだけを使用できることに気付きました。他にもいくつか要件がありました。私は基本的にPython(Django)WebサイトをSVNリポジトリからGitリポジトリに変換していて、SVNでコミットされていない変更がないことを確認したかったのですが、条件付きで.svnディレクトリと.pycコンパイル済みPythonファイルを除外します。次のrobocopyコマンドは、まさに私が望むものを実行します:

robocopy source destination /XO /E /XD .svn /XF *.pyc

LinuxのRobocopyに相当するものはありますか? rsyncを少し調べましたが、フォルダを同期する前にrsyncサーバーを設定する必要があるようです。

36
Ibrahim

Rsyncは間違いなくあなたが求めているもののようです。あるマシンから別のマシンにファイルをコピーするために「rsyncサーバー」をセットアップする必要はありません。 Rsyncは、ほとんどのLinuxボックスですでに有効になっている(手動で無効にしていない場合)、SFTP(SSHファイル転送)を介したファイルのコピーをサポートしています。

詳細については、Lifehackerの rsyncを使用してシステム間でファイルをミラーリングする を参照してください。

データをバックアップしたり、ファイルを安全に配布したり、インターネット経由でオフィスから自宅、ローカルネットワーク上のコンピューター間、またはコンピューターからWebサーバーに作業用ドキュメントをミラーリングしたりする場合でも、rsyncで作業を完了できます。今日は、rsyncを使用して、コマンドラインで安全な接続を介してMacとPCの間でフォルダーをミラーリングします。

Rsyncは無料で(スピーチのように)、クロスプラットフォームです。つまり、オペレーティングシステム(Windows/Cygwin、Mac OS、Linux)間でファイルを同期します。 sshを介して機能するため、暗号化され、安全です。 FTPとは異なり、インクリメンタルなので、partsofchangedファイルが転送され、ファイル全体ではありません。これにより、Speedy Gonzalezのようになります。そして、それがコマンドラインであるという事実は、それをスクリプト化可能にし、簡単に自動化します。

39
Josh Hunt

rsyncは、robocopyのように、同じマシン上のあるディレクトリから別のディレクトリにファイルをコピーします。 robocopyコマンドと同等のrsyncコマンドを次に示します。

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination

これにより、ソースが宛先に再帰的にコピーされ、古いファイルと「.svn」および「* .pyc」ディレクトリ/ファイルが除外されます。

15
Sean Staats

.svnディレクトリと.pycファイルを除外せずに生活できる場合、ファイル名とディレクトリ名にスペースが含まれていない場合は、GNU/Linuxコマンドプロンプトでcpを使用できます。

cp -uaT source destination

ここで、sourceおよびdestinationはディレクトリです。

  • -uオプションは、sourceの新しいバージョンのみがdestinationの既存のファイルを置き換えることを保証します。 https://superuser.com/a/341296 を参照してください。
  • -aオプション、別名「アーカイブ」は、タイムスタンプや権限などを保持しながら、source内のディレクトリを再帰的にコピーします。
  • -Tオプションは、sourcecontentsをディレクトリdirectory自体ではなくsourceに確実にコピーします。

GNU cpのバージョンを使用することが重要です。これらのオプションの一部は、macOSなどの他のUNIXバージョンでは異なるか、使用できない場合があるためです。

ファイル名またはディレクトリ名にスペースがある場合は、他の人が述べたようにrsyncを使用するか、-print0find-0xargsにパイプすることができます。この答えの。これらの可能性はどちらも除外を許可します。

1