Če do strežnika dostopaš prek SSH, lahko prek njega kopiraš tudi datoteke, po šifrirani povezavi, brez posebnega računa FTP. Izbiraš lahko med tremi orodji:
- scp: preprosto, za enkratno kopiranje;
- rsync: za velike količine podatkov, selitev in ponavljajočo se sinhronizacijo, ker prenese le spremembe in ga je po prekinitvi mogoče nadaljevati;
- sftp: za interaktivno upravljanje datotek oziroma z grafičnimi programi (FileZilla, WinSCP, Cyberduck).
Vsa tri orodja uporabljajo isto uporabniško ime, geslo ali ključ SSH kot prijava SSH (glej: Kako se prek SSH povežem s svojim VPS?). V Linuxu, macOS in Windows 10/11 (PowerShell) sta ukaza scp in sftp na voljo privzeto.
scp
# Nalaganje datoteke na strežnik
scp mentes.sql janos@203.0.113.10:/home/janos/
# Prenos datoteke s strežnika v trenutni imenik
scp janos@203.0.113.10:/var/log/nginx/error.log .
# Nalaganje celotne mape
scp -r weboldal/ janos@203.0.113.10:/var/www/
# Nestandardna vrata SSH (z velikim P!)
scp -P 2255 mentes.sql janos@203.0.113.10:/home/janos/
rsync
rsync mora biti nameščen na obeh računalnikih (sudo dnf install rsync ali sudo apt install rsync).
rsync -avz --progress weboldal/ janos@203.0.113.10:/var/www/weboldal/
-a(archive): kopira skupaj s podimeniki in ohrani dovoljenja, lastnika in čas spremembe,-v: izpiše kopirane datoteke,-z: med prenosom stisne podatke (uporabno pri počasni povezavi, v hitrem omrežju ga lahko izpustiš),--progress: prikazuje napredek.
Če ukaz zaženeš znova, kopira le spremenjene datoteke, zato je prekinjeno kopiranje preprosto nadaljevati.
Pazi na poševnico
Poševnica (/) na koncu vira spremeni rezultat:
rsync -a weboldal/ cel/kopira vsebino mapeweboldalv mapocel;rsync -a weboldal cel/kopira samo mapoweboldal, zato bo rezultatcel/weboldal/.
V preizkusu (AlmaLinux 10.2) so bili po prvi različici v cilju a.php, cache in e.log, pri drugi pa ena sama mapa weboldal.
Druga uporabna stikala
# Poskusni zagon: izpiše, kaj bi naredil, vendar ničesar ne kopira
rsync -avn weboldal/ janos@203.0.113.10:/var/www/weboldal/
# Nestandardna vrata SSH
rsync -avz -e "ssh -p 2255" weboldal/ janos@203.0.113.10:/var/www/weboldal/
# Izpust map
rsync -avz --exclude 'cache/' --exclude '*.log' weboldal/ janos@203.0.113.10:/var/www/weboldal/
# Na cilju izbriše datoteke, ki jih v viru ni več
rsync -avz --delete weboldal/ janos@203.0.113.10:/var/www/weboldal/
Stikalo --delete vedno najprej preizkusi s stikalom -n (poskusni zagon): če napačno vtipkaš vir ali cilj, se lahko izbrišejo datoteke v cilju. Pri poskusnem zagonu rsync izpiše, kaj bi izbrisal (v preizkusu deleting regi.txt), na koncu izpisa piše (DRY RUN), datoteka pa je res ostala na mestu.
Selitev med dvema strežnikoma
Pri selitvi strežnika je najhitreje, če rsync zaženeš neposredno na novem strežniku in podatke povlečeš s starega, tako ne gredo prek tvoje internetne povezave:
# Zagnano na novem strežniku
rsync -avz --progress janos@regi.szerver.ip:/var/www/ /var/www/
Pri daljšem kopiranju ukaz zaženi v tmux ali screen, da ga prekinitev povezave ne ustavi (glej: Zaganjanje ukazov ob prekinjeni povezavi SSH).
sftp
sftp odpre interaktivno povezavo, v kateri lahko z ukazi brskaš po datotekah strežnika:
sftp janos@203.0.113.10
| Ukaz | Pomen |
|---|---|
ls, cd, pwd |
izpis in menjava imenika na strežniku |
lls, lcd, lpwd |
enako na lastnem računalniku |
put fajl |
nalaganje (put -r mappa celotno mapo) |
get fajl |
prenos (get -r mappa celotno mapo) |
rm, mkdir, rename |
brisanje, ustvarjanje mape, preimenovanje |
exit |
izhod |
Za grafični vmesnik uporabi program, ki podpira SFTP (na primer FileZilla, WinSCP ali Cyberduck): kot protokol izberi SFTP in vnesi naslov strežnika, vrata SSH 22 (ali lastna) ter uporabniško ime in geslo ali ključ.
Prenos velike mape v enem koraku
Prenos veliko majhnih datotek (na primer strani WordPress) je hitrejši, če jih med prenosom zapakiraš v en sam arhiv:
tar -czf - weboldal/ | ssh janos@203.0.113.10 "tar -xzf - -C /var/www/"
Več o uporabi tar: Ustvarjanje in razpakiranje arhiva tar.gz.