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

实际上你可以,但是有点hacky..并且只能作为后缀。

正如您在评论中所读到的,--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
...

有以下三种选择:

  • --compare-dest=DIR其中仅在新目录中创建新文件。这可能不是您想要的,因为您必须列出全部以前版本的目录。
  • --copy-dest=DIR将未更改的文件复制到DIR目标,而不是从源传输它们。
  • --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的情况下,这没有帮助,因为他们想使用部分现有文件名来重命名一大堆文件。但我添加此内容是为了使问答更具普遍帮助。

相关内容