Per caricare qualche immagine o un file di configurazione basta un programma FTP. Ma quando devi spostare migliaia di file, scaricare un sito intero o aggiornare solo ciò che è cambiato, la riga di comando è molto più rapida e affidabile. In questa guida vediamo i due strumenti classici, SCP e rsync, con esempi pronti da adattare.
Prima di tutto: ti serve davvero?
SCP e rsync passano attraverso SSH. Da noi l’accesso SSH è disponibile sulla porta 7530, con il nome utente del tuo account e l’indirizzo del server indicato nell’email di attivazione; il metodo consigliato è una chiave SSH aggiunta dal pannello.
Se ti serve solo trasferire file ogni tanto, probabilmente non ti serve: puoi usare un client come FileZilla con SFTP sulla porta 2300 e le credenziali di un account FTP, oppure FTPS sulla porta 2100. L’host da usare è l’indirizzo del server che trovi nell’email di attivazione o nell’area clienti. Le porte 21 e 22 sono chiuse: se ottieni un timeout, controlla per prima cosa la porta.
SCP e rsync diventano utili quando i file sono tanti, quando vuoi automatizzare, o quando stai già lavorando da terminale.
Prepara la connessione
Negli esempi usiamo i segnaposto tuoutente e server: sostituiscili con il nome utente del tuo account e l’indirizzo del server dell’email di attivazione. La porta è sempre la 7530. Per non riscriverli ogni volta, definisci un nome breve nel file ~/.ssh/config del tuo computer:
Host miosito
HostName server
Port 7530
User tuoutente
IdentityFile ~/.ssh/id_ed25519
Così puoi scrivere miosito: al posto di tutto il resto. Trovi i dettagli in Usare la chiave SSH sul tuo hosting.
SCP: copiare file come con cp
SCP funziona come il comando cp, con la differenza che una delle due posizioni è sul server. La sintassi è sempre scp ORIGINE DESTINAZIONE, dove un percorso remoto si scrive utente@server:percorso.
Dal tuo computer al server
scp -P 7530 logo.png tuoutente@server:domains/tuodominio.it/public_html/img/
Nota: con scp la porta si indica con la P maiuscola, mentre con ssh è minuscola. È uno degli errori più frequenti.
Con l’alias definito nel file di configurazione diventa:
scp logo.png miosito:domains/tuodominio.it/public_html/img/
Un percorso remoto che non inizia con / si intende relativo alla tua home sul server.
Dal server al tuo computer
scp miosito:domains/tuodominio.it/public_html/wp-config.php ./
Il ./ finale significa «nella cartella in cui mi trovo sul mio computer».
Cartelle intere
scp -r miosito:domains/tuodominio.it/public_html/wp-content/themes/mio-tema ./
L’opzione -r copia ricorsivamente tutto il contenuto.
SCP è perfetto per pochi file o una copia una tantum. Il suo limite: ricopia sempre tutto, e se la connessione cade a metà di un trasferimento grande devi ricominciare da capo.
rsync: copiare solo ciò che è cambiato
rsync confronta origine e destinazione e trasferisce solo le differenze. La prima volta copia tutto, le successive solo i file nuovi o modificati. Questo lo rende ideale per sincronizzare un sito, fare copie periodiche o riprendere un trasferimento interrotto.
rsync deve essere presente sia sul tuo computer sia sul server. Su Linux e macOS di solito c’è già (verifica con rsync --version); su Windows si usa tipicamente all’interno di WSL. Se sul server non risultasse disponibile, faccelo sapere con un ticket.
Scaricare un sito intero
rsync -avz miosito:domains/tuodominio.it/public_html/ ./copia-sito/
-a(archivio): copia ricorsivamente mantenendo date e permessi;-v: mostra i file mentre li copia;-z: comprime i dati durante il trasferimento.
Se non usi l’alias, la porta si passa così:
rsync -avz -e "ssh -p 7530" tuoutente@server:domains/tuodominio.it/public_html/ ./copia-sito/
La barra finale conta
È il dettaglio che confonde tutti, quindi merita una sezione a parte:
| Comando | Risultato |
|---|---|
rsync -av cartella/ dest/ |
Copia il contenuto di cartella dentro dest. |
rsync -av cartella dest/ |
Copia la cartella stessa, creando dest/cartella. |
Caricare modifiche sul server
rsync -avz ./mio-tema/ miosito:domains/tuodominio.it/public_html/wp-content/themes/mio-tema/
Prova prima, sempre
Con -n (o --dry-run) rsync ti mostra cosa farebbe senza toccare nulla:
rsync -avzn ./mio-tema/ miosito:domains/tuodominio.it/public_html/wp-content/themes/mio-tema/
Usalo ogni volta che il comando scrive sul server, soprattutto con l’opzione successiva.
Specchio esatto con –delete
Di default rsync aggiunge e aggiorna, ma non cancella. Con --delete rimuove dalla destinazione i file che non esistono più nell’origine, ottenendo una copia identica:
rsync -avz --delete ./mio-tema/ miosito:domains/tuodominio.it/public_html/wp-content/themes/mio-tema/
È potente e pericoloso: una barra sbagliata o una cartella d’origine vuota e cancelli i file sul server. Mai --delete senza aver prima fatto un -n, e mai puntato sull’intera public_html di un sito con contenuti caricati dagli utenti.
Escludere file e cartelle
rsync -avz --exclude 'wp-content/cache/' --exclude '*.log' --exclude 'wp-config.php' \
./sito/ miosito:domains/tuodominio.it/public_html/
Escludere cache, log e file di configurazione evita di sovrascrivere impostazioni del server con quelle del tuo ambiente locale.
Riprendere un trasferimento interrotto
Per file molto grandi aggiungi --partial --progress: se la connessione cade, rilanciando lo stesso comando rsync riparte da dove si era fermato e ti mostra l’avanzamento.
SCP o rsync? Una tabella per decidere
| Situazione | Strumento |
|---|---|
| Un file o pochi file, una volta | SCP (o SFTP con FileZilla) |
| Scaricare un sito intero | rsync |
| Aggiornare spesso una cartella | rsync |
| File molto grandi su connessione instabile | rsync con --partial |
| Gestire versioni del codice | Git |
Un trucco per i siti grandi
Migliaia di file piccoli si trasferiscono lentamente uno per uno. Spesso conviene comprimerli sul server e scaricare un solo archivio:
ssh miosito "cd domains/tuodominio.it && tar -czf ~/sito.tar.gz public_html"
scp miosito:sito.tar.gz ./
ssh miosito "rm ~/sito.tar.gz"
Nota che l’archivio lo creiamo nella home, non dentro public_html, dove sarebbe scaricabile da chiunque. E lo cancelliamo subito dopo: archivi come .tar.gz e .zip occupano spazio e sono comunque esclusi dai backup automatici (vedi esclusioni dei backup).
E il database?
SCP e rsync copiano file, non database. Per esportare il database di un WordPress usa WP-CLI (wp db export) e poi scarica il file con scp. Se invece ti serve semplicemente una copia di sicurezza di file e database, i backup automatici sono già lì: puoi scaricarli o ripristinarli in autonomia dal pannello.
Se stai spostando un sito da un altro provider verso di noi, ricorda che per i nuovi clienti la migrazione del primo sito la facciamo noi gratuitamente, se richiesta prima dell’ordine.