rsyncを使用してソースから宛先にファイルを移動しますか?


15

rsyncは私のプロジェクトに適していますか?

次のことを行う必要があります。
-SSH経由でソースから宛先フォルダーに
ファイルをコピーします。-すべてのファイルがコピーされていることを確認します。-コピー
後にソースファイルを削除します。
-競合する名前がある場合、ファイルの名前を変更する必要があります。

私はオプションを使用できるようです:--remove-source-files(ソースファイルを削除する
ため)しかし、rsyncはどのように競合を管理しますか?

私のプロジェクトのユースケース:

サーバーAで科学計算を実行すると、結果がフォルダー「プロセス」に挿入されます。計算ごとに、/ process / calc1のようなリポジトリがあります。
ここで、リポジトリ "/ calc1"をサーバーBに転送し(/ process / calc1を取得)、サーバーAから "calc1"を削除します
。...別の計算中に、サーバーAで"/ process / calc2"を取得します。また、サーバーBの「/ process /」ディレクトリにある「calc2」を移動するという考え方もあります。サーバーBには次のようになります
。-
/ process / calc1-/ process / calc2
(およびサーバーAの/ process /は空です)。

新しい計算の後にサーバーAに「/ process / calc1」などの別のフォルダーがある場合(「/ process / calc1」がサーバーBに既に存在する場合)、rsyncは競合をどのように管理しますか(サーバーB)。

rsyncでルールを追加し、サーバーBで「/ process / calc1」の名前を「process / calc1R2」に変更することは可能ですか?など(例:calc1R3)?

ありがとう。

回答:


11

本当にrsyncを使用したい場合は、-backup、-backup-dir、および--suffixの組み合わせが必要なようです。最も近いと思うのは、このようなものです

rsync -abv --suffix R1 --remove-source-files src/ dst/

これはあなたが望むものに近いでしょうが、あなたが望むようにファイルの名前を正確に変更しません。--suffixオプションは、既存のファイルの末尾にテキストを追加しますが、最初の競合に対してのみこれを行います。再度実行すると、最初のバックアップが上書きされます。コマンドを実行するたびにそのサフィックス値を変更する必要があります。これは、次のようなタイムスタンプ付きのものを使用する場合に機能します。

rsync -abv --suffix `date +%Y%m%d%k%M%S` --remove-source-files src/ dst/

これがあなたが望んでいることに対して過剰かどうかはわかりませんが、それはあなたの要件を満たすべきです。


計算後に大きなファイルを作成できるので、rsyncを使用することをお勧めします(ネットワークの問題が発生した場合)。
user44782

1

名前が示すとおり、rsyncはファイルの同期に使用されます。「同期」されている場合、これはソースと宛先のファイルが同じであることを意味します。それはあなたがやりたいことのように思えません。

いくつかのファイルを移動したいだけのようです。そのためにrsyncを使用する必要はありません。LinuxまたはBSDを使用しているようです。sshでmv -nを使用できます。-nオプションは、既存のファイルを上書きしません。これは100%自動ではありません。しかし、あなたの場合、どのようにファイルが既に存在しているのかわかりません。ファイルはソースからコピー先にコピーされ、ソースから削除されます。同じ計算を再度実行しますか?それが同じ名前のファイルで終わる理由ですか?フォルダ名に実行番号またはバッチ番号を追加することをお勧めします。とにかくそれを明確にしたいでしょう。フォルダーの名前の付け方を制御できますか?詳細はありますか?コマンドをbashスクリプトなどに入れることをお勧めします。


場合によっては、同じ計算を再度実行する必要があります(そのため、同じ名前のファイルが作成されます)。実行を追加するのは良い考えです。コマンドmmv -aも見つけます(sshモードで動作することを望みます。誰かが既にこのコマンドラインを使用しているのでしょうか?)。フォルダの命名方法を制御できます。
user44782

ほとんどの場合、マシンにインストールされていません。あなたのマシンなら、インストールすることもできます。Debianベース:sudo apt-get install mmv sshfsまたはNFSを調べて、最終出力先にファイルを直接出力することもできます。中間の場所(検査、変更など)が必要でない限り。2つのマシン間のリンクの信頼性が低い場合、それはもちろん悪い考えです。ポールの提案は良いです。ただし、最初に実行番号を追加すると、おそらくより整理されます。
d -_- b

1
sshで「mv -n」をどのように使用しますか?sshfsでmvを使用できます。
ゲットリ

オプス...はい、それはそれを明確にします。
d -_- b

-1

SSHの場合、要約すると、これを使用します。

リモートシェル経由のアクセス:

プル:rsync [オプション...] [ユーザー@]ホスト:SRC ... [DEST]

プッシュ:rsync [オプション...] SRC ... [ユーザー@]ホスト:DEST

すべてrsync(1)で説明されています。

cronjobのスクリプトについては、パスワードを必要とせずにsshで自動的にrsyncを行うには、ssh-agent(1)も調べてください。

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