Fájlok másolása szerverek között: scp, rsync és sftp

Ha SSH-val eléri a szervert, fájlokat is másolhat rajta keresztül, titkosított kapcsolaton, külön FTP fiók nélkül. Három eszköz közül választhat:

  • scp: egyszerű, egyszeri másolásra;
  • rsync: nagy mennyiségű adathoz, költöztetéshez és ismételt szinkronizáláshoz, mert csak a változásokat viszi át, és megszakadás után folytatható;
  • sftp: interaktív fájlkezeléshez, illetve grafikus programokkal (FileZilla, WinSCP, Cyberduck).

Mindhárom eszköz ugyanazt a felhasználónevet, jelszót vagy SSH kulcsot használja, mint az SSH bejelentkezés (lásd: Hogyan csatlakozzak a VPS-emhez SSH-n keresztül?). Linuxon, macOS-en és Windows 10/11-en (PowerShell) az scp és az sftp parancs alapból elérhető.

scp

# Fájl feltöltése a szerverre
scp mentes.sql janos@203.0.113.10:/home/janos/

# Fájl letöltése a szerverről az aktuális könyvtárba
scp janos@203.0.113.10:/var/log/nginx/error.log .

# Teljes mappa feltöltése
scp -r weboldal/ janos@203.0.113.10:/var/www/

# Nem alapértelmezett SSH port (nagy P betűvel!)
scp -P 2255 mentes.sql janos@203.0.113.10:/home/janos/

rsync

Az rsync-nek mindkét gépen telepítve kell lennie (sudo dnf install rsync vagy sudo apt install rsync).

rsync -avz --progress weboldal/ janos@203.0.113.10:/var/www/weboldal/
  • -a (archive): alkönyvtárakkal együtt másol, és megtartja a jogosultságokat, a tulajdonost és a módosítási időt,
  • -v: kiírja a másolt fájlokat,
  • -z: tömöríti az adatot átvitel közben (lassú kapcsolaton hasznos, gyors hálózaton elhagyható),
  • --progress: mutatja az előrehaladást.

Ha a parancsot újra lefuttatja, csak a megváltozott fájlokat másolja, így egy megszakadt másolás egyszerűen folytatható.

Figyeljen a perjelre

A forrás végén lévő perjel (/) megváltoztatja az eredményt:

  • rsync -a weboldal/ cel/ a weboldal mappa tartalmát másolja a cel mappába;
  • rsync -a weboldal cel/ magát a weboldal mappát másolja, így az eredmény cel/weboldal/ lesz.

További hasznos kapcsolók

# Próbafuttatás: kiírja, mit csinálna, de nem másol semmit
rsync -avn weboldal/ janos@203.0.113.10:/var/www/weboldal/

# Nem alapértelmezett SSH port
rsync -avz -e "ssh -p 2255" weboldal/ janos@203.0.113.10:/var/www/weboldal/

# Mappák kihagyása
rsync -avz --exclude 'cache/' --exclude '*.log' weboldal/ janos@203.0.113.10:/var/www/weboldal/

# A célon törli azokat a fájlokat, amelyek a forrásban már nincsenek meg
rsync -avz --delete weboldal/ janos@203.0.113.10:/var/www/weboldal/

A --delete kapcsolót mindig előbb -n (próbafuttatás) kapcsolóval próbálja ki: ha a forrást vagy a célt elgépeli, a célon lévő fájlok törlődhetnek.

Költöztetés két szerver között

Szerverköltöztetésnél a leggyorsabb, ha az rsync-et közvetlenül az új szerveren futtatja, és a régiről húzza át az adatokat, így azok nem a saját internetkapcsolatán keresztül mennek:

# Az új szerveren futtatva
rsync -avz --progress janos@regi.szerver.ip:/var/www/ /var/www/

Hosszabb másolásnál futtassa a parancsot tmux-ban vagy screen-ben, hogy a kapcsolat megszakadása ne állítsa le (lásd: Parancsok futtatása megszakadó SSH kapcsolat mellett).

sftp

Az sftp interaktív kapcsolatot nyit, amelyben parancsokkal böngészheti a szerver fájljait:

sftp janos@203.0.113.10
Parancs Jelentés
ls, cd, pwd listázás és könyvtárváltás a szerveren
lls, lcd, lpwd ugyanez a saját gépen
put fajl feltöltés (put -r mappa egész mappát)
get fajl letöltés (get -r mappa egész mappát)
rm, mkdir, rename törlés, mappa létrehozása, átnevezés
exit kilépés

Grafikus felülethez használjon SFTP-t támogató programot (például FileZilla, WinSCP vagy Cyberduck): protokollként válassza az SFTP-t, és adja meg a szerver címét, a 22-es (vagy saját) SSH portot, valamint a felhasználónevet és a jelszót vagy a kulcsot.

Nagy mappa átvitele egy lépésben

Sok kis fájl (például egy WordPress oldal) átvitele gyorsabb, ha menet közben egyetlen archívummá csomagolja:

tar -czf - weboldal/ | ssh janos@203.0.113.10 "tar -xzf - -C /var/www/"

A tar használatáról bővebben: tar.gz archívum készítése és kicsomagolása.