rsync + コピーされたファイルの名前変更

rsync + コピーされたファイルの名前変更

コピーが完了したら、ターゲットファイルの名前を変更できますか(プレフィックスでいくつかのタイムスタンプを追加)rsync

たとえば、次のようにサフィックスを使用してターゲットファイルの名前を変更できます。

rsync --append  -arzvv --backup --suffix='_2015_09_10' /path/to/src/file /path/to/dst

ただし、タイムスタンプをプレフィックスとして追加したいので、ターゲットには次のよう2015_09_10_fileな内容が表示されますfile_2015_09_10

答え1

実際には可能ですが、少しハッキング的です。サフィックスとしてのみ使用されます。

コメントを読んだかのように--suffix上書きしたファイルをバックアップするためのものです。したがって、ソースからターゲットに同じファイルを同期してrsyncが上書きされるように強制します-Iが、ソースファイルが-uより新しい場合(絶対的ではありません)、その-b, --backupオプションを使用してバックアップディレクトリとサフィックスを定義する場合にのみ適用されます。

rsync -Iu --backup --suffix='_2015_09_10' --backup-dir=/path/to/dst /path/to/src/file /path/to/src/file

答え2

Rsyncは個々のファイルレベルでこれを行うことはできませんが、ツリー全体の操作を一部サポートしています。たとえば、

/path/to/dst-2019-07-31/file
/path/to/dst-2019-07-30/file
/path/to/dst-2019-07-29/file
...

3つのオプションがあります。

  • --compare-dest=DIR新しいディレクトリにのみ新しいファイルが作成されます。リストに追加する必要があるため、これはおそらくあなたが望むものではないかもしれません。みんな以前のバージョンのディレクトリ。
  • --copy-dest=DIRDIR変更されていないファイルをソースから転送するのではなく、ターゲットにコピーします。
  • --link-dest=DIR同じですが、ファイルの内容をコピーしないため、ターゲットははるかに少ないディスク容量を使用します。

次のように使用します。

rsync -a --link-dest=/path/to/dst-$YESTERDAY /path/to/src /path/to/dst-$TODAY

答え3

rsyncに転送された個々のファイルの名前を変更するのは非常に簡単です。

rsync /path/to/original_name.txt /path/new/my_new_file_name.txt

ターゲットパスにファイル名を指定すると、新しいファイル名になります。 OPの場合は使用したいので役に立ちません。部分既存のファイル名を使用して複数のファイルの名前を変更します。しかし、Q&Aをより一般的に便利にするためにこれを追加しています。

関連情報