Scp kopya gizli dosyaları nasıl yapılır?


63

Genellikle web ile ilgili dosyaları dolaşmak için genellikle SCP kullanıyorum. Sorun şu ki, bunu yaptığımda, gizli dosyaları (örneğin, .htaccess) kopyalama komutumu alamıyorum.

Genelde bunu çağırdım:

scp -rp src/ user@server:dest/

Bu gizli dosyaları kopyalamaz. Bunu tekrar çağırmak zorunda kalmak istemiyorum ( scp -rp src/.* ...bunun gibi bir şey yaparak - .ve ..bunun yine de garip ve sonuçları var).

scpMan sayfasında "gizli dosyaları dahil et" hakkında bir şey görmedim .

Bunu nasıl başarabilirim?


Ben varsayalım src/.*de kopyalar src/..(ana dizin), doğru mu?
Ken Sharp,

Yanıtlar:


67

Bu kesinlikle gizli dosyalarla eşleşmelidir. Kaynağın sonundaki /, "bu dizinin altındaki her dosya" yazıyor. Bununla birlikte, test etme ve araştırma sizi dışarıda bırakır. Bu aptalca bir davranış.

" Cevap ", kaynağın sonuna bir nokta eklemektir:

scp -rp src/. user@server:dest/

Gerçek cevap rsync kullanmaktır.


Güzel numara bunu henüz anlamadım.
cstamas

21
rsync -avz - e ssh - ilerlemiş src / kullanıcı @ sunucusu: dest /
MikeyB

2
Bu davranışı çoğaltamam. scp -r source/ host:source2nokta dosyalarını kopyalar. 2007 den OpenSSH 5.1 çalışır
Mikel

3
.Sonunda bir eklemenin güvenlik sorunları nedeniyle artık çalışmadığını (2019) unutmayın. Bu burada açıklanmıştır: superuser.com/questions/1403473/scp-error-unexpected-filename
Stéphane

25

Rsync'i deneyebilirsiniz. Bu iş için daha uygun:

rsync -av src / kullanıcı @ sunucusu: dest /

(Ve manuel sayfası okumaya değer.)


2
Ben hep rsync için --progress seçeneğini kullanın, ben onsuz yaşayamam = D
Hofa

1
@Hofa genellikle -P'yi kullanırım çünkü daha kısadır, zaten içerir - ilerleme içerir ve ayrıca
gelebilecek

9

Kaynak dizinden sonra eğik çizgi kullanmayın. Kodunuz şöyle görünür:

scp -rp src user@server:dest/

Bu, uzaktaki makinede bulunan tüm gizli dosyaların bulunduğu 'dest' altında bir 'src' dizini oluşturur. Muhtemelen istediğin tam olarak bu değildir, ancak gizli dosyaları src'ye kopyalayacaktır.


3

Aşağıdaki problemi çözecektir, bu sürekli entegrasyon ortamımız üzerinde tamamen test edilmiştir.

scp -rp src/. user@server:dest/
example scp -rp /usr/src/code/. content001@172.11.11.11:/usr/dest/code/

Umarım yardımcı olur


Son zamanlarda scp güncelledikten sonra, bu şimdi sonuçlanır scp: error: unexpected filename: . . Dağıtımınızla çalışıp çalışmadığını test ettiğinizden emin olun, Googler :)
Moritz Friedrich

1

Yalnızca gizli dosyaları kopyalamak için, Bu komutu kullanın

scp -rp /path_to_copy_hidden/.[!.]* user@host:/path_to_paste/

Gerçek oyun (gizli) /.[!.]*ile başlayan dosyalara atıfta bulunan etikettir.


0

Yukarıdaki scp çözümlerinin hiçbiri benim için çalıştı. Bununla birlikte, aşağıdakilerin cygwin üzerinde çalıştığını gördüm: scp -r directory / * host: directory '*' tüm görünür dosyaları eşleştirdi ve görünmezliği atladı.


0

Uzak makinede şifre girişi devre dışı bırakılmışsa ve giriş yapmanın tek yolu ortak anahtar ise, bunu kullanabilirsiniz:

$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress user1@remote.host:/remote/source/directory/ /local/destination/directory/

Gizli dosyaları da kopyalar.

Ayrıca, "user1" in bu dosyaları okuma iznine sahip olması gerektiğini unutmayın; örneğin, diğer kullanıcıların ssh klasörlerini bu yöntemle kopyalayamazsınız.


0

Gibi scpdüzenli ifadeleri destekler, bu güzel sizin için hile olacaktır:

scp -rp src/(*|.*) user@server:dest/


0

Dağıtılmış revizyon kontrolü gizli dosyaları yönetir

Çünkü CVE-2018-20685 güvenlik açığının, /.hile artık kullanılabilir ile scp. Bununla birlikte, dağıtılmış revizyon kontrolü gibi gitveya Hg Mecurial , diğer dosyalar gibi gizli dosyaları da işleyecektir. En sevdiğim Hg Mercurial için komutlar :

server:$ sudo apt install mercurial
client:$ sudo apt install mercurial
client:$ hg init src
client:$ cd src/
client:$ hg addr
client:$ hg com -m "first commit"
client:$ cd
client:$ hg clone src ssh://user@server/dest/

Daha sonraki değişikliklerin tekrar yapılması client:$ hg com -m "commit message"ve client:$ hg pushkomutu kullanarak itilmesi gerekir . Bu Hg Mercurial kopya sayfasındaki değişiklikleri zorlamak hakkında daha fazla bilgi edinin .

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.