Renomear arquivos duplicados ao usar o SCP (Secure Copy)

3

Estou usando o scp para mover arquivos entre servidores na minha rede da seguinte forma ...

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

... no entanto, não quero substituir arquivos duplicados. Existe alguma maneira de renomear os arquivos que o nome já está sendo usado na pasta de destino?

Por exemplo Se file.txt já existir na pasta de destino, o novo file1.txt será renomeado para file1-1.txt e as versões subseqüentes serão file1-2.txt etc. Da mesma forma que outros sistemas operacionais oferecem uma opção para manter os dois arquivos.

O formato dos nomes dos arquivos não é estrito, apenas não quero renomear manualmente os arquivos antes da transferência e não quero perder dados importantes.

    
por spcurtis81 02.10.2016 / 23:57

1 resposta

3

Acredito que você não conseguirá fazer isso com scp sozinho. Sua melhor aposta seria usar rsync over ssh com algo como as seguintes opções adicionais:

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

Algumas seções relevantes das man pages para 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).

Isso deve ser capaz de ser massageado para atender às suas necessidades. Abaixo está um teste básico, você terá, sem dúvida, outras opções, incluindo o ssh, para adicionar:

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

Então, com isso no lugar:

  1. Um arquivo é transferido de test1 para test2
  2. Se esse arquivo já existir em test2 , mas o arquivo transferido for mais recente , o arquivo 'remoto' será atualizado e, mais importante:
  3. É feito o backup do arquivo original em test2 para test2/backup com um sufixo de data e hora incremental adicionado

Muito legal? E eu suspeito exatamente o que você está procurando. Note que eu usei um caminho relativo para o diretório de backup, um caminho absoluto também pode ser usado ...

    
O
por andrew.46 03.10.2016 / 04:04