it-swarm.com.de

Doppelte Dateien umbenennen, wenn SCP (Secure Copy) verwendet wird

Ich benutze scp, um Dateien zwischen Servern in meinem Netzwerk wie folgt zu verschieben ...

scp /folder/file [email protected]<ip address>/User/Documents/Transfer

... Ich möchte jedoch keine doppelten Dateien überschreiben. Gibt es eine Möglichkeit, die Dateien umzubenennen, deren Name bereits im Zielordner gespeichert ist?

Z.B. Wenn file.txt bereits im Zielordner vorhanden ist, wird das neue file1.txt würde umbenannt in file1-1.txt und nachfolgende Versionen wären file1-2.txt usw. Ebenso wie andere Betriebssysteme die Option bieten, beide Dateien zu behalten.

Das Format der Dateinamen ist nicht streng, ich möchte einfach keine Dateien manuell umbenennen müssen, bevor sie übertragen werden, und ich möchte keine wichtigen Daten verlieren.

2
spcurtis81

Ich glaube, dass Sie dies nicht allein mit scp tun können. Am besten verwenden Sie rsync über ssh mit den folgenden zusätzlichen Optionen:

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

Einige relevante Abschnitte der Manpages für 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).

Dies sollte in der Lage sein, massiert zu werden, um Ihren Bedürfnissen zu entsprechen. Im Folgenden finden Sie einen grundlegenden Test. Sie werden zweifellos andere Optionen haben, einschließlich ssh, um Folgendes hinzuzufügen:

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

Also mit diesem an Ort und Stelle:

  1. Eine Datei wird von test1 Nach test2 Übertragen
  2. Wenn diese Datei bereits in test2 Vorhanden ist, die übertragene Datei jedoch neuer lautet, wird die 'Remote'-Datei aktualisiert. Wichtig:
  3. Die Originaldatei auf test2 Wird mit einem inkrementellen Suffix für Datum und Uhrzeit auf test2/backup Gesichert

Ziemlich cool? Und ich vermute genau das, wonach Sie suchen. Beachten Sie, dass ich einen relativen Pfad für das Sicherungsverzeichnis verwendet habe. Ein absoluter Pfad kann auch verwendet werden ...

3
andrew.46