使用 SCP(安全复制)时重命名重复文件

使用 SCP(安全复制)时重命名重复文件

我正在使用 scp 在我的网络上的服务器之间移动文件,如下所示...

scp /folder/file user@<ip address>/User/Documents/Transfer

...但是我不想覆盖重复的文件。有没有办法重命名目标文件夹中已被使用的文件?

例如,如果目标文件夹中已经存在 file.txt,则新文件file1.txt将被重命名为file1-1.txt,后续版本将是file1-2.txt等等。其他操作系统也提供保留两个文件的选项。

文件名的格式并不严格,我只是不想在传输之前手动重命名文件,也不想丢失重要数据。

答案1

我相信您无法scp独自完成此操作。最好的办法是使用rsyncoverssh以及以下附加选项:

--backup --suffix=_`date +"%m%d%Y_%H%M"` --backup-dir=DIR

手册页中的一些相关部分rsync

-b, --backup
   With this option, preexisting destination files are renamed as  each  file  is
   transferred  or  deleted.  You can control where the backup file goes and what
   (if any) suffix gets appended using the --backup-dir and --suffix options.

--suffix=SUFFIX
    This option allows you to override the default backup  suffix  used  with  the
    --backup  (-b) option. The default suffix is a ~ if no --backup-dir was speci-
    fied, otherwise it is an empty string.

--backup-dir=DIR
     In combination with the --backup option, this tells rsync to store all backups
     in the specified directory on the receiving side.  This can be used for incre-
     mental backups.  You can additionally specify a backup suffix using the --suf-
     fix option (otherwise the files backed up in the specified directory will keep
     their original filenames).

这应该能够根据您的需要进行调整。下面是一个基本测试,您无疑会添加其他选项,包括 ssh:

rsync -av --backup --suffix=_`date +"%m%d%Y_%H%M"` --backup-dir=backup test1/ test2/

因此,有了这个:

  1. 文件从 传输test1test2
  2. 如果此文件已存在于test2,但传输的文件是更新,“远程”文件已更新,重要的是:
  3. 原始文件test2备份到,test2/backup并添加增量日期和时间后缀

很酷吧?我猜想这正是你正在寻找的。请注意,我使用了相对的备份目录的路径,绝对路径也可以使用...

相关内容