scp -r… fakat belirtilen bir alt dizini dışarıda bırakır (hariç tutar)


29

İşte dizin yapısı:

/a/
/a/b/
/a/c/

Her şeyi kopyalamak istiyorum, / a / c / alt dizini dışında.

scp -rp myserver:/a .      # this will copy everything

S: scp komutunda bırakılacak bir dizini nasıl belirtirim?


3
Asıl motivasyon, "/ a / c /" alt dizininin çok büyük (gigabayt) olmasıdır, bu nedenle dışarıda bırakılması, kopyayı dakikadan saniyeye keser.
russian_spy 28:11

Yanıtlar:


28

Yapabileceğini sanmıyorum, ama rsync kullanabilir misin? Bunun gibi bir şey:

rsync -a --exclude=a/c myserver:/a .

5

Bence bunu yapmanın doğru yolu olabilir, bu yüzden hala SSH kullanıyorsunuz, scp ile yapmanın bir yolunu bulamadım - ancak ssh üzerinden rsync kullanmak sorunu çözebilir.

rsync -e 'ssh -ax' -av --exclude /a/c myserver:/a .

-N anahtarını kullanırsanız, işlemin kuru çalışmasını sağlar:

 rsync -e 'ssh -ax' -av --exclude /a/c -n myserver:/a .

Ayrıca deneyin -rz: -e "ssh -i private.pem" -rz 'users@server:/full/path/'.
mbrownnyc

1

Aşağıdaki örnekte olduğu gibi genişletilmiş globbing kullanabilirsiniz:

#Enable extglob
shopt -s extglob

cp -rv !(./excludeme/*.jpg) /var/destination

0

Bunu yapmak için mükemmel bir yol değil, hariç tutmak istediğiniz alt dizini salt okunur olarak ayarlayın. chmod -R 444 /a/chile yapmalı. Bu dizine yazmaya çalıştığında bir "izin reddedildi" hatası alırsınız.

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.