単一のファイルをRSYNCする方法?


94

現在、私は次のDirectoriesようにRSyncのみを行っています。

* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html

では、どのようにしてrsync単一のファイルを作成するの/var/www/public_html/.htaccessですか?

回答:


158

ディレクトリの場合と同じ方法で行いますが、ソースとしてファイル名へのフルパスを指定します。あなたの例では:

rsync -avz   --progress  /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/

19
また、ファイルを1つだけ送信する場合は、「-progress」パラメーターを追加して、進行状況を確認できます。
JoshStrange 2014

これは、ファイルの上にディレクトリがあるrsyncd.confのモジュールがまだ必要であることを意味しますか(たとえば、拒否オプションの削除を使用)、またはパスを指定するだけでサーバー上の任意の場所にファイルをアップロードできますか?manページはそれについて本当に明確ではありません。

2
-aには再帰が含まれますが、ファイル名が誤ってディレクトリになった場合に意図しない動作が発生する可能性があるため、そのフラグを単一ファイルに使用するかどうか不明な単一ファイルには必要ありません。
redanimalwar 2017年

2
--partial --stats --progress <<これらのフラグは、ファイルが非常に大きく、転送が壊れた後に再開する必要がある場合に役立ちます。
Ahi Tuna

16

基本的な構文

rsync options source destination

rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html

続きを読む


14

Michael Placeの回答は、ソースとターゲットの両方のルートディレクトリに対して、ファイルのパスにあるすべてのディレクトリがすでに存在している場合に適切に機能します。

しかし、次のソースパスでファイルを同期したい場合はどうでしょう。

/ source-root / a / b / file

次のターゲットパスを持つファイルに:

/ target-root / a / b / file

そしてディレクトリabは存在しませんか?

次のようなrsyncコマンドを実行する必要があります。

rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]

2
個別のファイルを既存のフォルダにコピーするか、事前にフォルダを作成する方が安全ではないでしょうか?フォルダーまたはフォルダーコンテンツの同期の場合、rsyncですべてのサブフォルダーを作成してみましょう。結局のところ、それが作業ですが、この特定のケースでは、個々のファイルをコピーするだけでは--includeパラメーターが面倒でトリッキーです。
トゥレインコルドバ

@ user1598390これが安全ではない場合に想定または想像しているシナリオはわかりませんが、このコマンドの特定の形式を思い出そうとして、頻繁に実行しなかった場合は、おそらくそうでしょう安全性が低く、単一のファイルをコピーします。ファイルが大きい場合、つまり、rsyncがコピー中に発生する可能性のあるほとんどのエラーを自動的に処理するため、安全です。一部のコンテキストでは、この形式でコマンドを生成するコードを記述しているため、関連するコードをカバーする十分なテストがあれば、これらのコマンドは「安全」であるので、私の構文は特に役に立ちました。
ケニーエビット2016

0

これまでのところ、2つの回答は完全ではなく、1つ以上のファイルを取得し、もう1つはそれほど単純ではありません。より簡単な回答IMOを次に示します。

以下はファイルを1つだけ取得しますが、mkdirを使用してdestディレクトリを作成する必要があります。これはおそらく最速のオプションです。

mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/

/ remote / pathにファイルのインスタンスが1つしかない場合、以下を実行すると、rsyncがディレクトリを作成します。これは、より多くのディレクトリを検索するため、おそらくもう少し時間がかかります。さらに、。/ localにない/ remote / pathのディレクトリに空のディレクトリを作成します

cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .

--includeと--excludeの順序が重要であることを覚えておいてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.