Làm cách nào để tôi scp các tệp có kích thước nhỏ hơn x?


13

Tôi đang phát triển một cái gì đó trên máy tính xách tay của mình và đưa các tập tin vào một PC hiệu suất cao (một máy chủ không có màn hình). Vì lười biếng, tôi chỉ làm điều này hiện tại (trên máy tính xách tay):

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

Tuy nhiên, một số tệp trong thư mục dự án là một số tệp nhật ký và các tệp mà tôi không cần gửi, đôi khi có thể là một hợp đồng biểu diễn. Những gì tôi muốn là một lệnh sạch đẹp, về cơ bản cũng thực hiện điều tương tự (truyền tất cả các tệp trong dự án và thư mục con của nó) nhưng chỉ gửi các tệp dưới một ngưỡng kích thước tệp nhất định, chẳng hạn như 100 mb. Tôi chỉ có kinh nghiệm nhẹ với bash và hoàn toàn không có regrec vì vậy tôi thực sự không biết làm thế nào để làm điều này mà không có một phương pháp phức tạp nào như nhập sys vào python và sử dụng một loạt các if và so sánh.

Câu trả lời:


27

bạn có thể sử dụng lệnh 'rsync' có tùy chọn để kiểm soát kích thước tệp được loại trừ.

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

từ ' người đàn ông rsync ',

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

Câu trả lời được cập nhật : chỉ cần loại trừ các tệp nhật ký với tùy chọn 'rsync' --exclude như bên dưới

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

hoặc bạn có thể sử dụng kết hợp lệnh 'find' với 'scp' và chỉ định giới hạn kích thước tệp với -sizetùy chọn của nó . sử dụng ! -name '*.log'để loại trừ các tệp nhất định kết thúc bằng 'log'.

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

1
Một lưu ý cho OP: rsynctương tự scp, nhưng hiệu quả hơn, vì nó chỉ chuyển thay đổi nếu một tệp được sửa đổi.
Paddy Landau

cẩn thận với thứ tự của các thư mục nhưrsync -rv --max-size SOURCE DESTINATION. Tôi đã không đọc đúng, và điều này có hậu quả rất xấu.
toto_tico
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.