Genellikle web ile ilgili dosyalar olmak üzere SCP'yi dosyaları kopyalamak için kullanıyorum. Sorun, bunu her yaptığımda gizli dosyaları (örn., .Htaccess) kopyalama komutumu alamıyorum.
Genellikle bunu çağırıyorum:
scp -rp src/ [email protected]:dest/
Bu gizli dosyaları kopyalamaz. Bunu tekrar çağırmak istemiyorum (scp -rp src/.* ...
- ve bu garip .
ve ..
zaten etkileri.
scp
man sayfasında "gizli dosyaları dahil et" hakkında hiçbir şey görmedim.
Bunu nasıl başarabilirim?
Bu kesinlikle gizli dosyalarla eşleşmelidir. Kaynağın sonundaki /, "bu dizinin altındaki her dosya" der. Bununla birlikte, test ve araştırmalar sizi destekliyor. Bu aptalca bir davranış.
" answer " kaynağın sonuna nokta eklemek içindir:
scp -rp src/. [email protected]:dest/
Gerçek yanıtı rsync kullanmaktır.
Rsync'i deneyebilirsiniz. Bu iş için daha uygun:
rsync -av src/kullanıcı @ sunucu: dest /
(Ve manuel sayfası okunmaya değer.)
Kaynak dizinin üstüne eğik çizgi koymayın. Kodunuz şöyle görünecektir:
scp -rp src [email protected]:dest/
Bu, uzak makinedeki 'dest' altında, tüm gizli dosyaların dahil edildiği bir 'src' dizini oluşturur. Muhtemelen tam olarak istediğiniz şey değildir, ancak gizli dosyaları src'ye kopyalar.
Aşağıdakiler sorunu çözecektir, bu sürekli entegrasyon ortamımızda tamamen test edilmiştir
scp -rp src/. [email protected]:dest/
example scp -rp /usr/src/code/. [email protected]:/usr/dest/code/
Umarım yardımcı olur
Yalnızca gizli dosyaları kopyalamak için, Bu komutu kullanın
scp -rp /path_to_copy_hidden/.[!.]* [email protected]:/path_to_paste/
Gerçek oyun, /.[!.]*
İle başlayan dosyalara atıfta bulunan .
Etiketidir (gizli)
scp
düzenli ifadeleri desteklediğinden, bu sizin için hile yapacaktır:
scp -rp src/(*|.*) [email protected]:dest/
CVE-2018-20685 güvenlik açığı nedeniyle /.
numarası artık kullanılamazscp
ile. Ancak, git
veya Hg Mecurial gibi dağıtılmış revizyon kontrolü, diğer dosyalar gibi gizli dosyaları işleyecektir. İşte benim favorim için komutlar - Hg Mercurial :
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://[email protected]/dest/
Sonraki değişikliklerin client:$ hg com -m "commit message"
ve ardından client:$ hg Push
komutu. Değişiklikleri buradan itme hakkında daha fazla bilgi edinin Hg Mercurial cheat sheet .
Yukarıdaki scp çözümlerinden hiçbiri benim için çalışmadı. Ancak, aşağıdaki cygwin üzerinde çalıştı buldum: scp -r dizin/* Host: dizin '*' tüm görünür dosyaları eşleşti ve görünmez atladı.
Uzak makinede şifre girişi devre dışı bırakılmışsa ve giriş yapmanın tek yolu ortak anahtar ile yapılmışsa, bunu kullanabilirsiniz:
$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress [email protected]:/remote/source/directory/ /local/destination/directory/
Gizli dosyaları da kopyalar.
Ayrıca, "user1" öğesinin bu dosyaları okumak için izinlere sahip olması gerektiğini unutmayın; örneğin, diğer kullanıcıların ssh klasörlerini bu yöntemle kopyalayamazsınız.