Jak kopírovat soubory z jednoho počítače do druhého pomocí ssh

Používám stroj s Linuxem (centos), k druhému systému jsem se již připojil pomocí ssh. Moje otázka nyní zní, jak mohu kopírovat soubory z jednoho systému do jiného systému?

Předpokládejme, že v mém prostředí mám dva systémy jako System A a System B. Používám stroj System A a některé další pomocí System B stroj.

Jak mohu zkopírovat soubor z System B do System A? A zkopírujte soubor z System A do System B?

komentářů

  • Považuji scp za často dřevorubec. Pokud to vyhovuje vašim potřebám, vyzkoušejte linuxjournal.com/article/8904 Místní připojení vzdáleného systému souborů.
  • @Alan Myslím, že máte na mysli “ těžkopádné „? Cumber Stone je karta Magic 😉
  • trochu související: vytvořit šifrovaný archiv místního dir/ na vzdáleném počítači pomocí ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Pokud máte přístup k ftp vzdáleného serveru, můžeme také použít wget ke stažení jako $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Reference1 Reference2
  • není duplikát, propojená otázka konkrétně požaduje nepoužívat scp; pro ten je scp skvělý a nejjednodušší způsob odpovědi, takže mody prosím odstraňte duplicitní příznak, jako kdyby někdo přešel k jinému, nejužitečnější odpověď bude ztracena.

Odpověď

Syntaxe:

scp <source> <destination> 

Na zkopírujte soubor z B do A, když jste přihlášeni do B:

scp /path/to/file username@a:/path/to/destination 

Zkopírování souboru z B do A při přihlášení do A:

scp username@b:/path/to/file /path/to/destination 

Komentáře

  • Pro objasnění obvykle nepoužívejte ‚ t scp ke kopírování souboru do nebo z místního počítače (systém A), když jste přihlášeni ke vzdálenému serveru (systém B) s ssh. scp vás přihlásí na vzdálený server, zkopíruje soubor a poté vás znovu odhlásí v jednom procesu, takže jej stačí spustit z prostředí vašeho místního počítače. Jak již bylo řečeno, můžete scp použít, pokud jste ‚ přihlášeni do systému B pomocí SSH a chcete kopírovat soubory mezi systémem B a systémem C.
  • @DopeGhoti. Ano, ‚ nemůžete přesouvat soubory mezi dvěma vzdálenými počítači. Zdroj nebo cíl musí být místní soubor. Pokud se však přihlásíte ke vzdálenému počítači pomocí ssh, můžete kopírovat soubory mezi dvěma vzdálenými počítači na tomto počítači ‚ s příkazového řádku.
  • Také důležité je pamatovat na to, že můžete scp přesunout pouze do složky na cílovém počítači, ke které máte oprávnění. Pokoušíte-li se jej zkopírovat do cíle, ke kterému nemá cílový uživatel oprávnění, nejprve zkopírujte soubor do domovského adresáře nebo podadresáře uživatele ‚ a poté ssh do cílový počítač a sudo jej přesunou do konečného cíle
  • Pamatujte -r (rekurzivní) a -p (zachovat metadata systému): scp -rp < file1 > < file2 >
  • Ano, použít -P k určení portu TCP na vzdáleném hostiteli. To mě pokaždé chytí, protože ssh používá -p.

Odpověď

V případě, že potřebujete alternativní přístup.

Nainstalujte sshfs. pokud používáte ubuntu / debian:

sudo apt-get install sshfs 

nebo pokud používáte centos / rhel:

sudo yum install fuse-sshfs 

nebo v systému macOS

brew install sshfs 

Vytvořit prázdný adresář

mkdir /home/user/testdir 

„link“ nebo „mount“ dva adresáře

sshfs [email protected]:/remote/dir /home/user/testdir 

„zrušit propojení“ adresářů

fusermount -u /home/user/testdir 

Odpojení souborového systému na BSD a macOS:

umount mountpoint 

nebo

diskutil unmount mountpoint 

Další informace naleznete zde linuxjournal.com libfuse / sshfs

Komentáře

  • Otázka konkrétně uvádí, že dotyčný operační systém je CentOS; není odvozen z Debianu. apt-get je debianismus; správný správce balíčků by byl yum nebo pro opravdu staré verze CentOS up2date nebo rpm.
  • +1 odpověď na tuto otázku může být mimo kontext, ale stále mi pomohla, a pokud vidím, i ostatním.
  • Nesouvisí, ale ‚ sa odpověď jednoho milionu dolarů xD
  • Pokud správně rozumím, dává to PŘÍSTUP ke vzdáleným souborům, ale neKOPÍROVAT je?
  • @ ToolmakerSteve you ‚ re zcela v pořádku: vytvoří falešný adresář (mount), takže můžete ke kopírování nebo přesunu věcí použít všechny vaše preferované nástroje: cp, mv, rm, rsync, unison … Příkaz scp by dokázal kopírovat pouze soubory.

Odpovědět

Někdy je třeba si s tarem udělat představu:

tar -C / -cf - \ opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \ --exclude=opt/widget/local.conf | ssh otherhost tar -C / -xvf - 

Komentáře

  • Kreativita? Takto jsme sdíleli páskové jednotky. 🙂
  • Můžete nám říct, co to dělá? Například nemám ponětí, co má ‚ cron ‚ společného s kopírováním souboru!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget jsou jednotlivé soubory, které mají být zahrnuty do archivu tar. Smyslem bylo ukázat, proč někdy musíte mít chuť. Tato řada příkazů streamuje archiv tar přes připojení ssh a zruší jeho archivaci na druhé straně. Na disk tedy není nikdy zapsán žádný archiv tar. Někdy to používám k výběru souborů ke kopírování v jednom příkazu.
  • Au! Naučil jsem, že první ‚ / ‚ byla zdrojová cesta! (Co je to?) Takže to byla hloupá otázka! Dík. 🙂
  • Tar bude chdir k “ / „, takže všechny následující cesty jsou relativní k “ / „.

odpověď

Pokud chcete synchronizovat soubory na obou systémech, podívejte se na program rsync:

(viz tutoriál zde)

Komentáře

  • Toto je skutečný profesionální nástroj.

Odpověď

Pokud máte jeden z běžných operačních systémů, můžete nainstalovat pigz, který je stejný jako gzip, kromě toho, že bude používat více jader a být rychlejší v rychlé síti. Můj příkaz je trochu jiný.

tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S" 

nebo jiný způsob získávání souborů

ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S 

nebo zálohujte root root pomocí

ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz 

komentářů

Odpovědět

Jednodušší metodou, která funguje pomocí počítačů NVIDIA Jetson ovládaných SSH, je připojení pomocí SFTP (SSH File Transfer Protocol).

Předpokládám, že bych chtěl dokument přesunout UFO_blueprint.odt ze vzdálených serverů NASA a přesuňte jej do mých dokumentů.

  1. cd na místo, kam chcete soubor uložit
$ cd Documents 
  1. připojit
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Přejděte do adresáře obsahujícího soubor, který chcete přenést.
$ cd NASA/secret_files/ 
  1. Přenos
$ get UFO_blueprint.odt 

Chcete-li získat celý adresář, použijte

$ get -r secret_files/ 

Komentáře

  • použijte put příkaz pro nahrávání souborů

odpověď

rekurzivní kopie souborů a složek Unix / Linux přes zabezpečené prostředí pomocí následujícího kódu:

scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path> 

Celý příklad může vypadat takto:

scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Pokud nemáte server DNS k rozlišení názvů hostitelů, použijte místo toho svou IP adresu. Výše uvedený příklad může vypadat takto

scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Odpovědět

Pokud běží SCP / SSH na jiném portu, ujistěte se, že jste zadali velká

možnost portu.

Příklad:

 scp -P 7121 /users/admin/downloads/* [email protected]:/home/  

Komentáře

  • Tato otázka je stará sedm let a má mnoho odpovědí již. I když je pravda, že ssh může používat jiné než výchozí porty a je vyžadována možnost ssh client ‚ s -P, nemusíte ‚ opravdu nepomůže s daným problémem. Zkuste se zaměřit na nedávné otázky.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *