Używam komputera z systemem Linux (centos), już połączyłem się z innym systemem za pomocą ssh
. Teraz moje pytanie brzmi: jak mogę skopiować pliki z jednego systemu do innego?
Załóżmy, że w moim środowisku mam dwa systemy takie jak System A
i System B
. Używam maszyny System A
i innych używam System B
.
Jak mogę skopiować plik z System B
do System A
? Skopiuj plik z System A
do System B
?
Komentarze
- Uważam, że
scp
często jest kamieniem węgielnym. Jeśli może odpowiadać Twoim potrzebom, wypróbuj to linuxjournal.com/article/8904 Lokalnie montuje zdalny system plików. - @Alan Myślę, że masz na myśli ” kłopotliwe „? Cumber Stone to karta Magic 😉
- nieco pokrewna: utwórz zaszyfrowane archiwum lokalnych
dir/
na zdalnym komputerze przy użyciussh
:tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
- Jeśli masz dostęp do ftp zdalnego serwera, możemy również użyć wget do pobrania, na przykład
$wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to
Odniesienie1 Odniesienie2 - Nie jest zduplikowane, powiązane pytanie zawiera konkretną prośbę o niestosowanie
scp
; w tym przypadkuscp
jest w porządku i najłatwiejszym sposobem na odpowiedź, więc mody proszę usunąć zduplikowaną flagę, jakby ktoś miał przejść do innej, najbardziej użyteczna odpowiedź zostanie pominięta.
Odpowiedź
Składnia:
scp <source> <destination>
Do skopiuj plik z B
do A
po zalogowaniu się do B
:
scp /path/to/file username@a:/path/to/destination
Aby skopiować plik z B
do A
po zalogowaniu się do A
:
scp username@b:/path/to/file /path/to/destination
Komentarze
Odpowiedź
Na wypadek, gdybyś potrzebował innego podejścia.
Zainstaluj sshfs. jeśli używasz ubuntu / debian:
sudo apt-get install sshfs
lub, jeśli używasz centos / rhel:
sudo yum install fuse-sshfs
lub, w macOS
brew install sshfs
Utwórz pusty katalog
mkdir /home/user/testdir
„połącz” lub „zamontuj” dwa katalogi
sshfs [email protected]:/remote/dir /home/user/testdir
„odłącz” katalogi
fusermount -u /home/user/testdir
W BSD i macOS, aby odmontować system plików:
umount mountpoint
lub
diskutil unmount mountpoint
Więcej informacji można znaleźć tutaj, linuxjournal.com libfuse / sshfs
Komentarze
- Pytanie konkretnie stwierdza, że dany system operacyjny to CentOS; nie pochodzi z Debiana.
apt-get
to Debianizm; prawidłowym menedżerem pakietów byłbyyum
lub, w przypadku naprawdę starych wersji CentOS,up2date
lubrpm
. - +1 odpowiedzi na to pytanie może być poza kontekstem, ale nadal pomogło mi i, o ile widzę, także innym.
- Bez związku, ale ' za milion dolarów xD
- Jeśli dobrze rozumiem, daje to DOSTĘP do zdalnych plików, ale ich nie KOPIUJEMY?
- @ ToolmakerSteve, ' masz rację: tworzy fałszywy katalog (montowanie), dzięki czemu możesz używać wszystkich preferowanych narzędzi do kopiowania lub przenoszenia rzeczy:
cp
,mv
,rm
,rsync
,unison
… Poleceniescp
mogłoby tylko kopiować pliki.
Odpowiedź
Czasem trzeba polubić smoły:
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 -
Komentarze
- Kreatywność? W ten sposób udostępnialiśmy napędy taśmowe. 🙂
- Czy możesz nam powiedzieć, co to robi? Na przykład nie mam pojęcia, co ' cron ' ma wspólnego z kopiowaniem pliku!
- @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget to pojedyncze pliki, które mają być zawarte w archiwum tar. Chodziło o to, aby zilustrować, dlaczego czasami trzeba się polubić. Ta seria poleceń przesyła strumieniowo archiwum tar przez połączenie ssh i cofa archiwizację po drugiej stronie. Dlatego żadne archiwum tar nigdy nie jest zapisywane na dysku. Czasami używam tego, aby wybrać pliki do skopiowania jednym poleceniem.
- Ow! Nauczyłem się, że pierwsza ' / ' była ścieżką źródłową! (Co to jest?) Więc to było głupie pytanie! Dzięki. 🙂
- Tar zmieni katalog na ” / „, więc wszystkie poniższe ścieżki są względne do ” / „.
Odpowiedź
Jeśli chcesz zachować synchronizację plików w obu systemach, spójrz na program rsync
:
Komentarze
- To jest naprawdę profesjonalne narzędzie.
Odpowiedź
Jeśli masz jeden z popularnych systemów operacyjnych, możesz zainstalować pigz, który jest taki sam jak gzip, z tą różnicą, że będzie używał wielu rdzeni i bądź szybszy w szybkiej sieci. Moje polecenie jest nieco inne.
tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S"
lub inny sposób pobierania plików
ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S
lub wykonaj kopię zapasową głównego systemu plików za pomocą
ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz
Komentarze
Odpowiedź
Prostszą metodą, która działa z komputerami NVIDIA Jetson sterowanymi przez SSH, jest połączenie za pomocą protokołu SFTP (SSH File Transfer Protocol).
Załóżmy, że chcę przenieść dokument UFO_blueprint.odt
ze zdalnych serwerów NASA i przenieś go do moich dokumentów.
-
cd
tam, gdzie chcesz zapisać plik
$ cd Documents
- Połącz
$ sftp sammy@your_server_ip_or_remote_hostname
- Przejdź do katalogu zawierającego plik do przesłania.
$ cd NASA/secret_files/
- Transfer
$ get UFO_blueprint.odt
Aby uzyskać pełny katalog, zamiast tego użyj
$ get -r secret_files/
Komentarze
- użyj
put
polecenie do przesyłania plików
Odpowiedź
Rekursywna kopia plików i folderów w systemach Unix / Linux nad bezpieczną powłoką, używając następującego kodu:
scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path>
Pełny przykład może wyglądać następująco:
scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Uwaga, jeśli nie masz serwera DNS do rozpoznawania nazw hostów, użyj zamiast tego adresu IP. Powyższy przykład może wyglądać następująco
scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Odpowiedź
Jeśli są uruchomione SCP / SSH na innym porcie, upewnij się, że podałeś opcję portu -P
wielkimi literami.
Przykład:
scp -P 7121 /users/admin/downloads/* [email protected]:/home/
Komentarze
- To pytanie ma siedem lat i ma wiele odpowiedzi już. Chociaż prawdą jest, że ssh może używać portów innych niż domyślne, a klient ssh ' s
-P
jest wtedy wymagana, nie musisz wtedy ' to naprawdę pomoc w rozwiązaniu problemu. Spróbuj skupić się na ostatnich pytaniach.
scp
do kopiowania pliku na lub z komputera lokalnego (System A), gdy jesteś zalogowany na serwerze zdalnym (System B) zssh
.scp
zaloguje Cię na zdalny serwer, skopiuje plik, a następnie wyloguje Cię ponownie w jednym procesie, więc po prostu uruchom go z powłoki na komputerze lokalnym. Biorąc to pod uwagę, możesz użyćscp
, jeśli ' ponownie zalogujesz się do Systemu B przez SSH i chcesz skopiować pliki między Systemem B a Systemem C.ssh
używa-p
.