V prostředí Linuxu je z důvodu zabezpečení i snadného použití nejlepší způsob, jak jít ssh. SSH, SSHFS, SCP a SFTP, jak uvádíte, jsou jen různé služby postavené na protokolu SSH. SCP se velmi snadno používá, funguje stejně jako CP, ale v cestě můžete zadat jména uživatelů a strojů. Můžeme tedy provést CP jako cp ~/music/ ~/newmusic/
, ale stejně snadno bychom mohli udělat scp ~/music/ [email protected]:~/newmusic
pro odeslání do počítače s názvem hostitel. To je vše – nemusíme nic nastavovat. Pokud nemáte nastavený certifikát nebo jiné ověřování (scp sdílí tato nastavení s ssh, samozřejmě), budete vyzváni k zadání hesla účtu na druhém počítači.
SFTP je nástroj, který usnadňuje provádění mnoha operací na vzdáleném souborovém systému – funguje stejně jako FTP, ale běží přes SSH, takže je bezpečný a vyžaduje pouze SSH server. man sftp
vám řekne vše o tom, jak jej používat. SFTP nepoužívám jen k přesunu složky mezi dvěma počítači, je užitečnější, když máte na práci hodně operací, například když přeskupujete soubory na jiném počítači.
SSHFS pouze rozšiřuje SFTP do souborového systému:umožňuje vám připojit virtuálního hostitele k vašemu souborovému systému, takže síťové záležitosti probíhají zcela transparentně. SSHFS je pro semipermanentní nastavení, nejen pro jednorázový přenos souborů. Nastavení vyžaduje více úsilí, o čemž si můžete přečíst na webových stránkách projektu.
Pokud potřebujete pracovat v prostředí se smíšeným operačním systémem, Samba se stane vaší další nejlepší sázkou. Windows a OS X podporují Sambu zcela automaticky a Linux také, i když je někdy obtížné ho používat.
Můj osobní favorit pro případy, kdy na bezpečnosti nezáleží, je netcat + tar:
Chcete-li odeslat adresář, cd do adresáře, jehož obsah chcete odeslat na počítači, který odesílá, a proveďte:
tar -cz . | nc -q 10 -l -p 45454
Na počítači, který přijímá obsah, cd na místo, kde se má obsah zobrazit, a proveďte:
nc -w 10 $REMOTE_HOST 45454 | tar -xz
Nahraďte $REMOTE_HOST
s ip / hostname počítače, který odesílá. Místo 45454
můžete také použít jiný port .
Ve skutečnosti se zde děje to, že „přijímající“ počítač se připojuje k odesílajícímu počítači na portu 45454 a přijímá obsah tar'd a gzip'd z adresáře a předává jej přímo tar (a gzip), aby jej extrahoval do aktuální adresář.
Rychlý příklad (pomocí localhost jako vzdáleného hostitele)
Počítač 1
[email protected]:~/nctest/a/mydir$ ls
file_a.txt file_b.log
[email protected]:~/nctest/a/mydir$ tar -cz . | nc -q 10 -l -p 45454
Počítač 2
[email protected]:~/nctest/b$ ls
[email protected]:~/nctest/b$ nc -w 10 localhost 45454 | tar -xz
[email protected]:~/nctest/b$ ls
file_a.txt file_b.log
Pro jednorázové tahy se doporučuje scp.
Ale pokud zjistíte, že tento adresář může fungovat a potřebujete jej mnohokrát přesunout, abyste udrželi druhou pozici aktualizovanou, můžete použít rsync (s ssh).
Vzhledem k tomu, že rsync má spoustu argumentů, obvykle to dávám do malého shellu, abych to pochopil správně (pokaždé). Cílem je posílat pouze věci, které se od posledního spuštění změnily.
#!/bin/bash
user="nisse"
host="192.168.0.33"
echo "Sync: /home/media/music/"
rsync --archive --delete -v --progress -e "ssh -l $user " /home/media/music/ $host:/home/media/music/
Toto přesune adresář s názvem "/home/media/music/" z místního počítače do počítače s názvem 192.168.0.33 pomocí uživatele "nisse". A smažte v cíli vše, co v místním počítači neexistuje.