GNU/Linux >> Linux Esercitazione >  >> Linux

Come _SPOSTA_ i file con scp?

Soluzione 1:

rsync su ssh è probabilmente la soluzione migliore con --remove-source-files opzione

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

un rapido test fornisce;

[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

Come menzionato da @SvenW, -e ssh è l'impostazione predefinita, quindi può essere omessa.

Soluzione 2:

Usa rsync invece di scp :

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

Maggiori informazioni con man rsync .

Soluzione 3:

A questa domanda è stata data una risposta corretta e la risposta è stata accettata, ma dal momento che è apparsa in cima alla prima pagina, ho pensato di provare almeno a rispondere in modo più preciso, anche se meno elegante. Sì, puoi utilizzare il codice di ritorno da scp , e lo faccio spesso. Nel bash :

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

Apprezzo il tuo punto di vista su più file per copiare e gestire correttamente gli errori nello stack, quindi per più file:

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

Quest'ultimo è pratico solo se stai usando ssh-agent , ma spero vivamente che tu lo sia.

Soluzione 4:

nella mia situazione, la porta ssh non è la 22, quindi

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

funziona per me.

Soluzione 5:

se hai un server di destinazione più vecchio come me, non puoi usare

--remove-source-files

ma devi usare

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

invece.


Linux
  1. Come crittografare i file con gocryptfs su Linux

  2. Come decomprimere i file in Linux (con esempi)

  3. Come trovare file con un determinato sottopercorso?

  4. Come trasferire file in modo sicuro utilizzando SCP

  5. Copia i file con SCP e Rsync

Come trovare file con il comando fd in Linux

Come scaricare file con il comando Curl in Linux

Come scaricare file con il comando Wget in Linux

Come caricare file con FileZilla

Come trasferire file con Commander One

Copia i file in modo sicuro con il comando SCP