J'utilise scp pour déplacer les fichiers entre les serveurs de mon réseau comme suit ...
scp /folder/file user@<ip address>/User/Documents/Transfer
... Cependant, je ne veux pas écraser les fichiers en double. Est-il possible de renommer les fichiers dont le nom est déjà pris dans le dossier de destination?
Par exemple. Si fichier.txt existe déjà dans le dossier de destination, le nouveau file1.txt
sera renommé en file1-1.txt
et les versions suivantes seront file1-2.txt
etc. De la même manière qu'un autre système d'exploitation offre une option conservez les deux fichiers.
Le format des noms de fichiers n’est pas strict, je ne veux tout simplement pas avoir à renommer manuellement les fichiers avant le transfert et je ne veux pas perdre de données importantes.
Je crois que vous ne pourrez pas faire cela avec scp
seul. Votre meilleur choix serait d'utiliser rsync
sur ssh
avec quelque chose comme les options supplémentaires suivantes:
--backup --suffix=_`date +"%m%d%Y_%H%M"` --backup-dir=DIR
Quelques sections pertinentes des pages de manuel relatives à 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).
Cela devrait pouvoir être massé pour répondre à vos besoins. Ci-dessous un test de base, vous aurez sans doute d’autres options, y compris ssh, à ajouter:
rsync -av --backup --suffix=_`date +"%m%d%Y_%H%M"` --backup-dir=backup test1/ test2/
Donc, avec ceci en place:
test1
à test2
test2
, mais que le fichier transféré est plus récent, le fichier 'distant' est mis à jour et, ce qui est important:test2
est sauvegardé sur test2/backup
avec un suffixe incrémentiel pour la date et l'heure.Plutôt cool? Et je soupçonne exactement ce que vous recherchez. Notez que j'ai utilisé un chemin relatif pour le répertoire de sauvegarde, un chemin absol peut également être utilisé ...