Yanıtlar:
Bunu doğrudan yapamazsın scp
. Unix yolu, araçları birleştirmek, find
komutu istersiniz .
Belirli bir tarihe sahip bir dosyayı aramaya bir örnek:
touch --date "2007-01-01" start
touch --date "2008-01-01" end
find -type f -newer start -not -newer end
Bu örneği buradan aldım: http://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/
Bunu scp'ye beslemek için şunu yapabilirsiniz:
find -type f -newer start -not -newer end -exec scp {} dest: \;
Bu, dosya başına bir defa scp çağıracak, bu yavaş olabilir çünkü her seferinde bağlantıyı kurması gerekir. Yalnızca bir avuç dosyanız varsa ve adlarında hiç boşluk yoksa, bunu yapabilirsiniz:
scp `find -type f -newer start -not -newer end` dest:
scp dest:`ssh dest find -type f -newer start -not -newer end` .
Kopyalama modunda 'cpio' kullanarak bir SSH kanalı üzerinden kopyalanan etkili (tek satır!) Bir alternatif (@sudodus). Belki de zaman / dakika / daha yeni testleri kullanarak bulma argümanlarını istediğiniz gibi uyarlayabilirsiniz.
Kesin tarih ve saat testinizi almak için kaynak sisteminizde doğru saat ve tarih ile sahte bir dosya oluşturun, find -newer testini kullanın veya man sayfasının -newerXY testini kullanın. Bkz. Https://linux.die.net/man/1/find
Uzak sistemde çalışan find komutunun çıktısı güvenli bir şekilde yerel sisteme ssh ile geri aktarılır ve kaydedilir.
İhtiyacınız olan her şeyi yapıyor gibi görünüyor, ancak 'scp' kullanmıyor - bu sizin işaretlemenizi etkileyebilir. Ancak, Unix yaklaşımı olan Unix araçlarının bir kombinasyonunu kullanıyor!
Her durumda, scp en sık karşılaşılan durumlar için bir kısayoldur, dosyaların filtrelenmesi gerektiğinde bu yaklaşım daha güçlüdür.
ssh username@ip-adress '(cd /path/to/sourcedir; find . -print | cpio -oBav -Hcrc)' | ( cd /path/to/targetdir && cpio -ivumd )
https://askubuntu.com/questions/1080590/how-to-use-find-in-scp-command