GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie _MOVE_ Dateien mit scp?

Lösung 1:

rsync über ssh ist wahrscheinlich die beste Wahl mit --remove-source-files Möglichkeit

rsync -avz --remove-source-files -e ssh /this/dir example@unixlinux.online:/remote/dir 

ein Schnelltest ergibt;

[example@unixlinux.online ~]$ mkdir test1
[example@unixlinux.online ~]$ mkdir test2
[example@unixlinux.online ~]$ touch test1/testfile.1
[example@unixlinux.onlineorkstation001 ~]$ ls test1/
testfile.1
[example@unixlinux.online ~]$ rsync --remove-source-files -av -e ssh test1/testfile.1 example@unixlinux.online:/home/tomh/test2/
sending incremental file list

sent 58 bytes  received 12 bytes  10.77 bytes/sec
total size is 0  speedup is 0.00

[example@unixlinux.online ~]$ ls test1/
[example@unixlinux.online ~]$
[example@unixlinux.online ~]$ ls test2/
testfile.1

Wie @SvenW erwähnt hat, -e ssh ist die Standardeinstellung und kann weggelassen werden.

Lösung 2:

Verwenden Sie rsync statt scp :

rsync -avz --remove-source-files /sourcedir example@unixlinux.online:/targetdir 

Mehr Infos mit man rsync .

Lösung 3:

Diese Frage wurde gut beantwortet und die Antwort wurde akzeptiert, aber da sie oben auf der Titelseite schwebte, dachte ich, ich würde zumindest versuchen, sie genauer, wenn auch weniger elegant, zu beantworten. Ja, Sie können den Rückgabecode von scp verwenden , und ich mache es oft. In bash :

scp foo example@unixlinux.online:/destination && rm foo

Ich verstehe Ihren Standpunkt zum Kopieren mehrerer Dateien und zum korrekten Umgang mit Fehlern im Stapel, also für mehrere Dateien:

for file in bar*; do scp "$file" example@unixlinux.online:/destination && rm "$file" ; done

Letzteres ist nur praktisch, wenn Sie ssh-agent verwenden , aber ich hoffe sehr, dass Sie es sind.

Lösung 4:

In meiner Situation ist der SSH-Port nicht 22, also

rsync -avz --remove-source-files -e "ssh -p $portNumber" example@unixlinux.online:/path/to/files/ /local/path/

funktioniert für mich.

Lösung 5:

Wenn Sie wie ich einen älteren Zielserver haben, können Sie

nicht verwenden
--remove-source-files

aber Sie müssen verwenden

--remove-sent-files --protocol=29

stattdessen.


Linux
  1. So entpacken Sie Dateien unter Linux (mit Beispielen)

  2. Wie finde ich Dateien mit einem bestimmten Unterpfad?

  3. So übertragen Sie Dateien sicher mit SCP

  4. So finden Sie Dateien mit dem fd-Befehl in Linux

  5. Kopieren Sie Dateien mit SCP und Rsync

So finden Sie Dateien mit dem fd-Befehl in Linux

So laden Sie Dateien mit dem Curl-Befehl unter Linux herunter

So laden Sie Dateien mit dem Wget-Befehl unter Linux herunter

So laden Sie Dateien mit FileZilla hoch

So übertragen Sie Dateien mit Commander One

Sicheres Kopieren von Dateien mit dem SCP-Befehl