Pertanyaan Bagaimana cara file scp ukuran kurang dari x?


Saya mengembangkan sesuatu di laptop saya dan scp'ing file ke PC kinerja tinggi (server tanpa monitor). Keluar dari kemalasan saya hanya melakukan ini saat ini (di laptop):

scp -r ~/project/* server:~/project/

Namun beberapa file di direktori proyek adalah beberapa file log dan file yang tidak perlu saya kirim, yang kadang-kadang bisa menjadi pertunjukan. Apa yang saya inginkan adalah perintah bersih yang bagus yang pada dasarnya melakukan hal yang sama (mentransmisikan semua file dalam proyek dan subdirektorinya) tetapi hanya mengirim file di bawah ambang batas file tertentu, seperti 100 mb. Saya hanya sedikit berpengalaman dengan bash dan tidak sama sekali dengan regexp jadi saya tidak benar-benar tahu bagaimana melakukan ini tanpa beberapa metode rumit seperti mengimpor sys ke python dan menggunakan banyak ifs dan perbandingan.


11
2017-07-13 16:29


asal




Jawaban:


Anda dapat menggunakan perintah 'rsync' yang memiliki opsi untuk mengontrol ukuran file agar tidak dikecualikan.

rsync -rv --max-size=100m /path/in/local/ server:~/project/

dari 'man rsync',

--max-size=SIZE    don't transfer any file larger than SIZE

Jawaban yang diperbarui : cukup kecualikan file log dengan opsi 'rsync' --exclude seperti di bawah ini

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

atau Anda dapat menggunakan kombinasi perintah 'find' dengan 'scp' dan tentukan batas ukuran file dengan itu -size pilihan. menggunakan ! -name '*.log' untuk mengecualikan file tertentu diakhiri dengan 'log'.

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;

27
2017-07-13 16:54



Catatan untuk OP: rsync mirip dengan scp, tetapi lebih efisien, karena hanya mentransfer perubahan jika file diubah. - Paddy Landau