Transferul fișierelor pe server (scp, rsync, SFTP)
Cum copiați fișiere între calculator și server cu scp, rsync sau un client SFTP grafic (FileZilla, WinSCP).
Pe această pagină
Fișierele se copiază pe server și înapoi tot prin SSH, cu aceleași date ca la conectare: adresa IP, utilizatorul root, portul 22 și parola sau cheia SSH. Adresa IP o găsiți în panoul app.blackbox.md, la „Serverele mele” (app.blackbox.md/my-servers; din blackbox.md: „Contul meu” → „Panou de administrare” → „Serverele mele”), în câmpul „IP” de pe cardul serverului.
Disponibil pentru: titularul contului blackbox.md care are un server activ și datele de acces root (parola sau cheia SSH): Conectarea la server prin SSH (Windows, macOS, Linux). La serverele dedicate, datele de acces le stabiliți împreună cu echipa.
Ce instrument alegeți
| Instrument | Potrivit pentru | Sisteme |
|---|---|---|
scp |
un fișier sau un folder, o singură dată | macOS, Linux, Windows 10 și 11 |
rsync |
foldere mari, copieri repetate, reluare după întrerupere | macOS, Linux; Windows prin WSL |
sftp |
o sesiune în care navigați pe server | macOS, Linux, Windows 10 și 11 |
| FileZilla, WinSCP | lucrul cu mouse-ul, fără comenzi | FileZilla: toate; WinSCP: Windows |
Toate folosesc SSH, deci datele circulă criptat. Comenzile scp, sftp și rsync le rulați pe calculatorul dvs., nu pe server. Înlocuiți IP_SERVER cu adresa serverului.
scp: copiere rapidă
scp este instalat pe macOS și Linux. Pe Windows 10 și 11 face parte din clientul OpenSSH, împreună cu ssh și sftp: îl rulați în PowerShell, cu aceeași sintaxă.
Încărcați un fișier în /root pe server:
scp backup.zip root@IP_SERVER:/root/Directorul de destinație trebuie să existe înainte de copiere. Pe un server nou, fără server web, nu există nici /var/www; creați-l de pe calculator:
ssh root@IP_SERVER "mkdir -p /var/www/site"Încărcați un folder cu -r (pe server apare /var/www/site):
scp -r site root@IP_SERVER:/var/www/Descărcați un fișier în directorul curent (punctul de la final) și un folder întreg:
scp root@IP_SERVER:/root/backup.tar.gz .
scp -r root@IP_SERVER:/var/www/site ./site-backupO anumită cheie o indicați cu -i. Dacă SSH ascultă pe alt port decât 22 (de exemplu, la serverul unui alt furnizor; serverele BLACKBOX folosesc portul 22), adăugați -P, cu majusculă, spre deosebire de ssh -p:
scp -i ~/.ssh/id_ed25519 -P PORT backup.zip root@IP_SERVER:/root/În PowerShell, căile locale se scriu ca în Windows:
scp -r C:\Users\NUME_UTILIZATOR\Documents\site root@IP_SERVER:/var/www/sftp: sesiune interactivă
Opțiunile -i și -P funcționează ca la scp.
sftp root@IP_SERVERComandă la promptul sftp> |
Ce face |
|---|---|
ls, cd /var/www/site |
listează și schimbă directorul pe server |
lls, lcd site |
același lucru pe calculatorul dvs. |
put index.html, put -r assets |
încarcă un fișier sau un folder |
get config.php, get -r uploads |
descarcă un fișier sau un folder |
exit |
închide sesiunea |
rsync: recomandat pentru foldere mari și copieri repetate
rsync copiază doar diferențele: la a doua rulare transferă numai fișierele noi sau modificate, iar o copiere întreruptă se reia. Trebuie să fie instalat la ambele capete. Pe macOS este inclus, pe Linux îl instalați din managerul de pachete, dacă lipsește, iar pe Windows îl rulați din WSL (Windows Subsystem for Linux); fără WSL, folosiți scp sau WinSCP. Dacă lipsește pe server, instalați-l:
Ubuntu și Debian:
apt update
apt install -y rsyncAlmaLinux și CentOS Stream:
dnf install -y rsyncÎncărcați conținutul folderului local site în /var/www/site:
rsync -avz --progress site/ root@IP_SERVER:/var/www/site/| Opțiune | Ce face |
|---|---|
-a |
copiază recursiv, cu permisiunile, datele de modificare și legăturile simbolice |
-v, --progress |
afișează fișierele și progresul |
-z |
comprimă pe drum; ajută la text, nu la arhive, imagini sau video |
--partial |
păstrează fișierul copiat parțial, ca rularea următoare să continue |
-P |
--partial --progress (la scp, -P este portul) |
-n |
simulare (--dry-run): arată ce s-ar face, fără să modifice nimic |
--delete |
șterge din destinație fișierele care nu mai există în sursă |
Slash-ul de la sfârșitul sursei contează: site/ copiază conținutul folderului, iar site creează încă un nivel, /var/www/site/site.
Un fișier mare, cu reluare (dacă legătura cade, rulați din nou aceeași comandă):
rsync -avP backup.tar.gz root@IP_SERVER:/root/Descărcați un folder de pe server:
rsync -avz --progress root@IP_SERVER:/var/www/site/ ./site-backup/Alt port sau o anumită cheie se dau prin -e:
rsync -avz --progress -e "ssh -p PORT -i ~/.ssh/id_ed25519" site/ root@IP_SERVER:/var/www/site/Copie exactă cu --delete
Ca fișierele șterse local să dispară și de pe server, adăugați --delete. Rulați întâi simularea cu -n: rândurile deleting … sunt fișierele care vor fi șterse.
rsync -avzn --delete site/ root@IP_SERVER:/var/www/site/Dacă lista este corectă, rulați aceeași comandă fără n:
rsync -avz --delete site/ root@IP_SERVER:/var/www/site/Risc Cu
--delete, o greșeală de cale (un slash lipsă, sursa și destinația inversate, un folder local gol) poate șterge fișierele de pe server, iar BLACKBOX nu face copii automate ale serverului dvs. Rulați întâi cu-nși faceți o copie înainte: Strategia de backup pentru serverul dvs..
FileZilla (Windows, macOS, Linux)
FileZilla Client este gratuit: site-ul oficial FileZilla. Etichetele de mai jos sunt din interfața în engleză; în română sau rusă sunt traduse.
- Deschideți „File” → „Site Manager...” și apăsați „New site”.
- Completați:
- „Protocol”: „SFTP - SSH File Transfer Protocol” (nu „FTP”);
- „Host”: adresa IP; „Port”:
22; „User”:root; - „Logon Type”: „Normal”, cu parola root în „Password”, sau „Key file”, cu cheia privată aleasă prin „Browse...” (
.ppksau cheia OpenSSH, de exempluid_ed25519). Pe macOS, folderul.ssheste ascuns: în fereastra de alegere apăsați Cmd + Shift + G și scrieți~/.ssh. Dacă FileZilla propune să convertească cheia, acceptați.
- Apăsați „Connect”.
- La prima conectare apare „Unknown host key”: bifați „Always trust this host, add this key to the cache” și apăsați „OK”.
- Trageți fișierele între panoul din stânga (calculatorul) și cel din dreapta (serverul).
Cheia se poate adăuga o singură dată, pentru toate conexiunile SFTP: „Edit” → „Settings...” (pe macOS: „FileZilla” → „Settings...”) → „Connection” → „SFTP” → „Add key file...”.
În bara „Quickconnect”, scrieți la „Host” sftp://IP_SERVER sau la „Port” 22. Altfel FileZilla încearcă FTP, iar conectarea eșuează.
WinSCP (Windows)
WinSCP este gratuit: site-ul oficial WinSCP. Etichetele de mai jos sunt tot din interfața în engleză. La pornire se deschide fereastra „Login”.
- Selectați „New Site” și completați: „File protocol”: „SFTP”; „Host name”: adresa IP; „Port number”:
22; „User name”:root; „Password”: parola root (pe un server „Parolă + cheie”). - Pentru cheie: „Advanced...” → „SSH” → „Authentication” → „Private key file”, alegeți fișierul
.ppkfolosit în PuTTY. Dacă alegeți o cheie OpenSSH, WinSCP propune s-o convertească în.ppk: acceptați. Apăsați „OK”. - Apăsați „Save”, apoi „Login”.
- La prima conectare, confirmați cheia serverului cu „Accept” (în versiunile mai vechi, „Yes”).
- Trageți fișierele între panoul din stânga (calculatorul) și cel din dreapta (serverul).
Serverele „Doar cheie”
Pe un server cu insigna „Doar cheie” (pe cardul din „Serverele mele”), parola root nu funcționează prin SSH, deci nici în scp, sftp, rsync, FileZilla sau WinSCP. Configurați cheia în client:
scp,sftpșirsyncîncearcă singure cheile standard din~/.ssh(de exempluid_ed25519); altă cheie o indicați cu-i(larsync, în-e);- FileZilla: „Logon Type” „Key file” sau cheia din „Settings”; WinSCP: „Private key file”.
Fără cheia corectă apare Permission denied (publickey), iar în FileZilla și WinSCP, No supported authentication methods available (server sent: publickey). Cheia unui calculator nou o adăugați cu „Adaugă cheie SSH”: Adăugarea și ștergerea cheilor SSH pe server. Autentificarea cu parolă o reactivați cu „Activează login cu parolă”: Activarea și dezactivarea autentificării SSH cu parolă.
După încărcarea unui site: proprietarul și permisiunile
Fișierele încărcate ca root aparțin lui root (iar rsync -a păstrează chiar ID-ul utilizatorului de pe calculatorul dvs.). Serverul web trebuie să le poată citi, iar aplicația să scrie în directoarele ei (încărcări, cache). Treceți-le în proprietatea utilizatorului sub care rulează serverul web sau PHP-FPM:
| Sistem | nginx | Apache | PHP-FPM (implicit) |
|---|---|---|---|
| Ubuntu, Debian | www-data |
www-data |
www-data |
| AlmaLinux, CentOS Stream | nginx |
apache |
apache |
Utilizatorul real apare pe rândurile care nu încep cu root:
ps -eo user,comm | grep -E 'nginx|apache2|httpd|php-fpm'Ubuntu și Debian
chown -R www-data:www-data /var/www/site
find /var/www/site -type d -exec chmod 755 {} +
find /var/www/site -type f -exec chmod 644 {} +AlmaLinux și CentOS Stream
Aceleași comenzi, cu utilizatorul din tabel (de exemplu nginx:nginx sau apache:apache). În plus, SELinux este activ implicit și verifică eticheta fiecărui fișier. Fișierele pot avea o etichetă greșită (de exemplu, cele mutate cu mv din /root își păstrează eticheta veche), iar atunci site-ul răspunde 403 Forbidden. După încărcare, restabiliți etichetele:
restorecon -Rv /var/www/siteCa aplicația să poată scrie într-un director (de exemplu uploads), SELinux cere pentru el o etichetă separată. Înlocuiți calea cu directorul dvs.:
dnf install -y policycoreutils-python-utils
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/uploads(/.*)?"
restorecon -Rv /var/www/siteInstalarea serverului web: Server web cu HTTPS: nginx sau Apache și Let's Encrypt.
Transferuri lungi: tmux sau screen
De pe calculatorul dvs., o copiere rsync întreruptă se reia rulând din nou aceeași comandă cu -P. Când copiați între două servere (de exemplu, de la vechea găzduire pe serverul nou), rulați copierea pe server într-o sesiune tmux: dacă legătura SSH cade, copierea continuă.
Instalați tmux, dacă lipsește. Ubuntu și Debian:
apt update
apt install -y tmuxAlmaLinux și CentOS Stream (pe aceste sisteme, screen nu este în depozitele standard):
dnf install -y tmux| Acțiune | tmux | screen |
|---|---|---|
| porniți o sesiune | tmux new -s transfer |
screen -S transfer |
| ieșiți fără s-o opriți | Ctrl + B, apoi D | Ctrl + A, apoi D |
| reveniți după reconectare | tmux attach -t transfer |
screen -r transfer |
Exemplu: comanda de mai jos, rulată în sesiunea de pe serverul nou, preia site-ul de pe serverul vechi. Se cere parola root a serverului vechi; dacă acolo intrați cu cheie, urmați ghidul de mutare de mai jos.
rsync -avzP root@IP_SERVER_VECHI:/var/www/site/ /var/www/site/Mutarea completă: Mutarea unui site pe serverul BLACKBOX.
De ce SFTP și nu FTP
- Pe serverele VPS pentru care alegeți sistemul de operare la comandă nu este instalat niciun server FTP. SFTP funcționează imediat, prin SSH, cu datele root.
- FTP trimite parola și fișierele necriptate; SFTP le criptează. Nu confundați SFTP cu FTPS („FTP over TLS”), care cere un server FTP.
- Filtrarea din rețea, administrată de BLACKBOX, lasă să treacă implicit doar SSH (22), HTTP (80), HTTPS (443) și ping. Porturile unui server FTP instalat de dvs. nu ar fi accesibile din internet fără o cerere la suport: Firewall: filtrarea din rețea și ufw/firewalld pe server.
- Pe planurile „VPS hosting”, întrebați suportul dacă panoul de control de pe server include FTP: Planurile „VPS hosting” cu panou de control.
Erori frecvente
| Mesaj | Cauză probabilă | Ce faceți |
|---|---|---|
Permission denied (publickey) sau No supported authentication methods available (server sent: publickey) |
server „Doar cheie”, cheia nu este configurată în client sau instalată pe server | indicați cheia (-i, „Key file”, „Private key file”) sau adăugați-o cu „Adaugă cheie SSH” |
Permission denied, please try again. (FileZilla: Authentication failed.) |
parolă greșită | copiați parola cu „Afișează datele de acces”: Afișarea datelor de acces root |
FileZilla: Could not connect to server, cu portul 21 în jurnal |
s-a ales protocolul FTP | alegeți „SFTP - SSH File Transfer Protocol”, portul 22 |
rsync: command not found |
rsync lipsește pe server sau pe calculator |
instalați-l |
No space left on device |
discul serverului este plin | Discul serverului este plin |
No such file or directory la încărcare |
directorul de destinație nu există pe server | creați-l, ca în secțiunea despre scp |
403 Forbidden pe site după încărcare |
proprietar, permisiuni sau etichete SELinux greșite | secțiunea despre proprietar și permisiuni |
Alte probleme de conectare: Nu mă pot conecta prin SSH.
Întrebări frecvente
Unde pun fișierele site-ului?
În directorul din configurația serverului web (root la nginx, DocumentRoot la Apache), de obicei sub /var/www/.
Copierea multor fișiere mici durează mult. Ce fac?
Faceți o arhivă pe calculator, copiați-o în /root/ cu scp și dezarhivați-o pe server. Pe calculator, apoi pe server:
tar czf site.tar.gz sitetar xzf /root/site.tar.gz -C /var/www/Cum îmi descarc datele înainte de a șterge serverul?
Cu rsync sau scp -r în sens invers, de pe server pe calculator, pentru fiecare director important. Bazele de date exportați-le întâi într-un fișier (dump). Ce să includeți: Strategia de backup pentru serverul dvs..