Bagaimana cara scp file dengan ukuran kurang dari x?

13

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

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

Namun beberapa file dalam direktori proyek adalah beberapa file log dan keluar 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 subdirektori) tetapi hanya mengirim file di bawah batas filesize 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 berbelit-belit seperti mengimpor sys ke python dan menggunakan banyak ifs dan perbandingan.

iammax
sumber

Jawaban:

27

Anda dapat menggunakan perintah 'rsync' yang memiliki opsi untuk mengontrol ukuran file yang akan 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 'temukan' dengan 'scp' dan tentukan batas ukuran file dengan -sizeopsinya. gunakan ! -name '*.log'untuk mengecualikan file tertentu diakhiri dengan 'log'.

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;
αғsнιη
sumber
1
Catatan untuk OP: rsyncmirip dengan scp, tetapi lebih efisien, karena hanya mentransfer perubahan jika file diubah.
Paddy Landau
hati-hati dengan urutan direktori sebagai rsync -rv --max-size SOURCE DESTINATION. Saya tidak membaca dengan benar, dan ini dapat memiliki konsekuensi yang sangat buruk.
toto_tico