Bir dosyayı uzak sunucudan yerel bir makineye nasıl kopyalarım?


238

Terminal kabuğumda uzaktaki bir sunucuya ssh'ed ve cdistediğim dizine.

Şimdi bu dizinde, tableyerel makineme kopyalamak istediğim bir dosya var /home/me/Desktop.

Bunu nasıl yapabilirim?

Denedim scp table /home/me/Desktopama böyle bir dosya veya dizin hakkında bir hata verdi.

Bunu nasıl yapacağını bilen var mı?


Sıklıkla scp ile kopyalandığınızı düşünüyorsanız, uzak dizini dosya tarayıcınıza bağlayıp sürükle ve bırak yöntemini kullanabilirsiniz. Ubuntu 15 sunucumda, "Git"> "Konum Girin"> menü çubuğunun altında debian@10.42.4.66:/home/debian. Alternatif olarak, sshfsuzak makinenin dosya sistemini ana bilgisayara monte etmek için kullanabilirsiniz . Ancak bu kurulum biraz daha karmaşık.
ConvexMartian

Ver rsyncbir deneyin. Hem yerel hem de uzak kopyalar için harikadır, size kopya ilerlemesini vb.
Verir

Yanıtlar:


380

İçin sözdizimi scp:

Dosyayı uzak bir bilgisayara göndermek istediğiniz bilgisayardaysanız:

scp /file/to/send username@remote:/where/to/put

Burada remotebir FQDN veya bir IP adresi olabilir.

Öte yandan, uzak bir bilgisayardan dosya almak isteyen bilgisayardaysanız:

scp username@remote:/file/to/send /where/to/put

scp İki uzak ana bilgisayar arasında da dosya gönderebilir:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

Yani temel sözdizimi:

scp username@source:/location/to/file username@destination:/where/to/put

Bu konuda man scpdaha fazla fikir edinmek için okuyabilirsiniz .


4
Birden fazla dosyayı kopyalamak istersem ne olur? Bir boşluk ekledim ve başka bir tane kullandım /file/to/sendMüthiş cevabınız için teşekkürler!
camdixon

6
scp -rözyinelemeli kopyalayacaktır.
Henry

Dosyaları ağdan
VM'ime

2
@heemayl +1 iyi cevap için. Güvenli bir bağlantı olması durumunda (kimlik doğrulaması gerektiren) aşağıdakileri kullanabilirsiniz (dosyayı yerelden uzaklara kopyalamak için): scp -i mykey.pem somefile.txt root@remotehost.ip.address : / some / folder / in / remote
Guy Avraham

1
scp -P 123Özel bağlantı noktasını belirtmek için kullanın
ek olarak

14

rsyncAlternatif olarak kullanabilirsiniz . Temelde dosyaları senkronize etmek içindir .. ama bu amaçla da kullanabilirsiniz.

rsync -avzh --stats --progress remoteuser@remoteip  localpath 

ssh seçenekleri eklemek için:

rsync -e "ssh -P $port_value" remoteuser@remoteip  localpath

--progressve --statsgerçek zamanlı transfer gösterimi için kullanışlıdır.



8
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Bağlantı noktasını kullanıyorsanız:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Bu dosyayı aynı uzak dizine kopyalar.
Max Yudin

3

Tamamen ağdaki herkese güven ve doğrudan hedef makinenin bir bağlantı noktası bağlayabilir varsa, Netcat'i kullanabilirsiniz: nc.

Hedef makinenin IP adresinin 192.168.1.123 olduğunu varsayalım.

Hedef çalıştırmada:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

Farklı bir bağlantı noktası seçebilir ve ayrıca arabirimlerinizin başka bir IP'sine bağlayabilirsiniz, 0.0.0.0 sadece tüm arabirimleri yakalar.

Kaynak çalıştırmasında:

tar zxcf - filename | nc 192.168.1.123 7777

IMHO, bu, dijital ağları kullanarak bir bilgisayardan diğerine dosya göndermenin en hızlı yoludur.

Argümanları ve komut satırı seçenekleri biraz farklı sürümleri arasında değişebilir ncve tar, ama kesinlikle son Linux dağıtımları ile çalışacaktır.


2

Linux'ta, bir klasörü ve içeriğini kullanıcı (bu örnekte root) dizininden, yerel kullanıcı dizinindeki bir klasöre kopyalamak için bu komutu yerel makinede çalıştırıyorum:

scp -r root@178.62.54.83: ~ / folderinremoteuserdir ~ / folderinlocaluserdir

Sıklıkla unutmuş gibiyim ~ / dikkat edin ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.