Linuxはrobocopyと同等ですか?


34

LinuxのコマンドラインツールがWindowsのツールよりもはるかに優れている方法はたくさんありますが、私が見つけたものの1つに相当するものはrobocopyです。Robocopyはの場合よりもはるかに汎用性が高くcp、Linuxツールで必要なことをどのように行うかわかりません。

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

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サーバーをセットアップする必要があるように思えました。


1
rsyncサーバーを設定する必要はありません。rshover sshは、サーバーモードでリモートマシン上でrsyncを自動的に実行します(その接続にのみ使用され、独自のアカウントで実行され、完了時に自動的に終了します) 。
CesarB 09

「…しかし、フォルダを同期する前にrsyncサーバーをセットアップする必要があるように思えました。」私はRsyncを長年使用しており、正式なRsyncサーバーをセットアップする必要はありませんでした。実際、macOSの多くの同期/バックアップツールは、Carbon Copy ClonerやSuperDuperなどのサーバーをセットアップする必要なく、Rsyncをコアとして使用しています。
JakeGould

回答:


38

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

詳細については、rsync使用したシステム全体で LifehackerのMirrorファイルを参照してください。

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

Rsyncは無料で(音声のように)、クロスプラットフォームです。つまり、オペレーティングシステム(Windows / Cygwin、Mac OS、Linux)間でファイルを同期します。sshで動作するため、暗号化され安全です。FTPとは異なり、それの増分、これだけの部品変更ファイルは、転送され、ファイル全体ではなく、それがスピーディー・ゴンザレスのように行かせるた、。また、コマンドラインであるため、スクリプト化可能で簡単に自動化できます。


rsyncのmanページを読む- sshを使用する(W / O明示的なrsyncサーバ)あなたは「-e sshを」使用します
ダグ・ハリス

1
rsyncは素晴らしい!また、user @ host.com:/ blah /のようなパスは自動的に使用されるため、-eを使用する必要はありません。
ハウツーオタク

うーん、それはクールです。それで、基本scp的に-sshで転送するための構文を使用できますか?実際に1台のマシンでファイルを転送しようとしていましたが、知っておくと良いでしょう。
イブラヒム

1
残念ながら、この答えは完全に正しいわけではありません。SSHは使用しますが、SFTPは使用しません。代わりに、rsyncプロトコルを使用してリモートrsyncインスタンスと直接通信します。
ダニエルB

15

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

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

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


ただし、シングルスレッド方式で行われる場合を除き、ストレージソリューションの間接的な量によっては5倍以上のパフォーマンスヒットが発生する可能性があります。
ミハイル

ファイルがソースから削除されると、ファイルは同期先に同期されません。
ジロン胡
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.