Yanıtlar:
Evet, kullan -r:
scp -rp sourcedirectory user@dest:/path
Not: Bu, sourcedirectoryiçeriyi oluşturur, /pathböylece dosyalar içeride olur./path/sourcedirectory
-pr(ters sırada olan seçenekler) klasörleri kopyalamayacaktır, içeriğini hedef dizine (görünüşte, seçeneklerin sırası önemlidir) kopyalayın.
Önceki cevaplar teknik olarak doğru olsa da rsyncbunun yerine kullanmayı düşünmelisiniz . rsyncGönderme ve alma taraflarındaki verileri farklı bir mekanizma ile karşılaştırır, böylece daha önce gönderilen verileri tekrar göndermesi gerekmez.
Bir şeyi bir uzak makineye bir kereden fazla kopyalayacaksanız kullanın rsync. Aslında, rsyncher zaman kullanmak iyidir, çünkü dosya izinlerini ve sahipliğini kopyalamak ve belirli dosyaları veya dizinleri hariç tutmak gibi şeyler için daha fazla denetime sahiptir. Genel olarak:
$ rsync -av /local/dir/ server:/remote/dir/
Yerel bir dizini uzak bir dizin ile senkronize eder. İkinci kez çalıştırırsanız ve yerel dizinin içeriği değişmediyse, hiçbir veri aktarılmaz - scpher seferinde her şeyi çalıştırıp kopyalamaktan çok daha etkilidir .
Ayrıca, rsynckesintili transferlerden farklı olarak çok kolay bir şekilde kurtarmanıza olanak sağlar scp.
Son olarak, rsyncvarsayılan olarak ssh üzerinden çalışan modern sürümler scp, zaten çalışıyorsa, rsynchemen hemen bir drop-in yerine geçmelidir.
rsyncdaha verimlidir. Şu anda yapmadığı bir şey scp, uzak ana bilgisayarlar arasında kopyalamaya izin vermektir (en azından rsync istemcisini bunlardan birinde çalıştırmadan).
-av: v, ayrıntılı bir arşiv, bir arşiv ve özyinelemeli, hak sahibi tarihlerini ve bağlantılarını koruyan -rlptgoD kısayolu. Sadece özyinelemeli kullanımı istiyorsanız-r
Bu -rseçenek bunun için var. :)
Gerekirse daha fazla bilgi için scp man sayfasına bakın .
Özyinelemeli Kopyalama Seçeneği '-r' (küçük harf)
scp -r
Düzenli yerel özyinelemeli kopya seçenek '-R' ile karıştırıyorum (büyük harf)
cp -R
En iyi yol, SSH üzerinden rsync kullanmaktır
rsync -a -essh /source/ user@dest-server:/dest/
rsync -a -essh user@source-server:/source/ /dest/
Favori seçeneklerim -Pazvessh --delete:
rsyncKullandığım tüm sürümleri sshvarsayılan olarak kullanır , bu nedenle -esshgerekli olması olası değildir. Uzaktaki ana bilgisayara bağlanmak için kullanılan komut seçimi, tekrarlı bir şekilde kopyalamakla gerçekten ilgilidir.
Özyinelemeli kopya bayrağı aradıktan ve bu yazı sayesinde başarıyla kullandıktan sonra, sadece bir öneri göndermek istiyorum.
Durum buysa, bir dizini (tekrarlı olarak) kopyalıyorsanız. Belki de dosyalar sıkıştırılmış olarak gönderilirse transferde zaman kazanabilirsiniz.
Sonunda yaptığım şey:
local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz
Bu yardımcı olur umarım
.tar.gzda dosya olmalıdır, .tgzçünkü dosya gzipped tar arşividir ( -zbayrak kullanıldığından beri ).
Bu basit komut ile bir dizini tekrar tekrar sıkıştırılmış bir arşive kopyalayabilirsiniz:
ssh -p 22 user@address-to-copy-from.com 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
Örneğin, içeriğini kopyalamak için /var/loggelen domain.comiçin ~/logs.tgzçalıştırmak:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' > ~/logs.tgz
Borular kullanarak hedef sistemdeki dosyaları da çıkarabilirsiniz. Bu komut içeriğini kopyalar /var/logde domain.comhiç ~/destination/logsisteminizde:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
Bir dizini yansıtmakla birlikte, muhtemelen kullanmalısın rsync...
Kullanıcının şifresini etkileşimli olarak girmek yerine bir parametre olarak iletmeyi tercih ederseniz, sshpass( sudo apt-get install -y sshpass) kullanabilirsiniz .
Örnek:
sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder
Herhangi bir sistemde dizinleri art arda kopyalamak için -r seçeneğini scp komutuyla kullanabilirsiniz. Başka bir şeye ihtiyacınız olursa, scp komutu eğitimine bakın . -r seçeneği Linux komutlarının çoğunda özyinelemeli işlem anlamına gelir.
-rseçenek yıllar önce önerilmiş ve kabul edilen cevap.
Başka bir (muhtemelen tekrarlanan kullanım için daha iyi) seçeneği, NFS kullanmaktır - nfs-kernel-server'a bakın ve NFS paylaşımlarının nasıl kurulduğunu kontrol edin.
scpama NFS bir seçenek değil.