复制完成后是否可以更改目标文件的名称(添加一些时间戳作为前缀)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的情况下,这没有帮助,因为他们想使用部分现有文件名来重命名一大堆文件。但我添加此内容是为了使问答更具普遍帮助。