SSH üzerinden dosya aktarma [kapalı]


461

Komut satırında uzak bir sunucuya SSHing ve komut ile yerel makineme bir dizin kopyalamaya çalışıyorum scp. Ancak, uzak sunucu bu "kullanım" iletisini döndürür:

[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 [...] [[user@]host2:]file2
[Stewart:console/ebooks/discostat] jmm%

Her iki yönde de dosya aktarabilmek istiyorum. Okuduğum kadarıyla, yukarıdaki komutun indirme ve scp -p [localpath] [remotepath]yükleme için işe yarayacağını düşündüm ?

Yanıtlar:


735

Bir scpyerde bir şeye ihtiyacın var . Bu scp ./styles/yüzden güvenli kopya diyorsunuz ./styles/, ancak nereye kopyalayacağınızı söylemiyorsunuz .

Genellikle, indirmek istiyorsanız, gidecek:

# download: remote -> local
scp user@remote_host:remote_file local_file 

nerede local_file. aslında içinde kopyaladığınız dosyayı koymak için bir dizin olabilir yüklemek için tam tersi:

# upload: local -> remote
scp local_file user@remote_host:remote_file

Bir dizinin tamamını kopyalamak istiyorsanız, ihtiyacınız olacaktır -r. Şunun scpgibi düşünün cp, ancak aşağıdakileri içeren bir dosya belirtebilirsiniz:user@remote_host:file yanı sıra sadece yerel dosyalar.

Düzenleme: Bir açıklamada belirtildiği gibi, yerel ve uzak ana bilgisayarlardaki kullanıcı adları aynı ise, uzak bir dosya belirtilirken kullanıcı atlanabilir.


2
Kullanıcı uzak ana bilgisayarda ve yerel ana bilgisayarda aynı ise, kullanıcı adının atlanabileceğini unutmayın: scp hello.c myserver.net:~/projects/
strager

Evet, doğru, bununla ilgili bir not ekleyeceğim. Kullanıcıyı dahil ettim çünkü verdiğim örnekler her zaman işe yarayacak. :)
lemnisca

Ben bu konuda bir sıkıntı yaşıyorum .. bu doğru. scp C: \ dosyaadı.txt server1 @ sunucu2: ev
Vincent

Lütfen "yükleme" ve "yükleme" seçeneklerine kalın biçimlendirme ekleyin.
kursus

2
"doğal olarak" (doğal olarak söylüyorum, çünkü bu konuda sadece 15 dakika harcadım) yerel bilgisayara "indirmeye" çalışırken uzak ana bilgisayara bağlanmamalısınız, çünkü kodu uzak bir örnekten çalıştırıyorsanız, "local" ne demek istediğimi görürseniz, "uzaktan" olarak yorumlanmalı. Yani yok ilk ssh çalıştırın.
PatrickT

164

Masaüstü makinenize / bilgisayarınızdan kopyalama yapıyorsanız, WinSCP kullanın veya Linux'ta Nautilus, Sunucuya Bağlan seçeneği ile SCP'yi destekler.

scp dosyaları yalnızca sshd çalıştıran bir makineye kopyalayabilir, bu nedenle scp üzerinde çalıştırdığınız bilgisayardan uzaktaki bilgisayarda istemci yazılımını çalıştırmanız gerekir.

Komut satırına kopyalama yapıyorsanız, şunu kullanın:

# copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile

veya

# copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile

4
Adamsın. Sunucu tarafında herhangi bir ek kurulum yapmadan 10 saniyeden daha kısa sürede bir blog dağıttım!
PM

2
Bu mükemmel çalıştı. Hem scp hem de ssh olduğu için cmd cinsinden msysgit kullandım.
İbn Saeed

3
Bu mükemmel çalıştı. Scp * user @ host: / path / to / where
komutunu kullandım

3
Bu en iyi cevap olmalı.
gsamaras

3
WinSCP önerisi için teşekkürler. Tüm bu komutları elle yazmaya çalışmaktan çok daha kolay ...
Brian Leishman

23

Hem kaynak hem de hedef belirtmeniz gerekir ve dizinleri kopyalamak istiyorsanız -r seçeneğine bakmalısınız.

Bu nedenle, uzak sunucudan geçerli dizininize / home / user / komutunu tekrar tekrar kopyalamak için:

scp -pr user@remoteserver:whatever .

19

Hayır, hala ihtiyacın var scp [from] [to] hangi şekilde kopyaladığınıza ihtiyacınız var

Fark şu ki, scp -p server:serverpath localpath


8
-p'nin amacı nedir?
Qinjie

1
Kimden man scp: Orijinal dosyadaki değişiklik sürelerini, erişim sürelerini ve modları korur.
pjmil

4
Açık olmak gerekirse -psadece buraya dahil edilmiştir, çünkü OP bayrağı orijinal sorularına dahil etmiştir.
Gareth
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.