Làm cách nào để sao chép tất cả các tệp và thư mục, ngoại trừ một số tệp qua ssh?


23

Sử dụng dòng lệnh Linux, tôi sử dụng scplệnh, để sao chép tất cả các tệp và thư mục từ một thư mục nhất định. Tuy nhiên, tôi không muốn sử dụng băng thông, vì sao chép những thứ tôi hiếm khi thay đổi như tiny_mcethư mục của mình . Bí quyết để sao chép mọi thứ, nhưng bỏ qua một danh sách ngắn các thư mục?

Câu trả lời:


19

rsynchoạt động tốt và trong hầu hết các trường hợp, sử dụng SSH tự động làm giao thức vận chuyển. Nó sẽ so sánh các tệp và chỉ tải lên những tệp đã thay đổi - nhưng bạn cũng có thể sử dụng danh sách loại trừ để chỉ định các tệp trong cây không nên bị loại bỏ bằng mọi cách.


rsync không tự động sử dụng SSH - bạn phải cung cấp các cờ "-e ssh" để làm điều đó.

4
Vâng, nó làm. Phát hành Rsync 2.6.0 - Trình điều khiển từ xa mặc định bây giờ là "ssh" trừ khi bạn nói cấu hình bạn muốn đặt một cái gì đó khác làm mặc định. samba.org/rsync

12

Bạn có thể thử rsync chỉ sao chép các tệp đã thay đổi, cũng hoạt động trên ssh.


9

Sử dụng rsync --excludelà sự lựa chọn rõ ràng hơn ở đây, nhưng nếu bạn thực sự muốn gửi một vài tệp hoặc thư mục và có một cái gì đó cụ thể để loại trừ, bạn có thể sử dụng shell hả hê scp. Trước tiên hãy chắc chắn rằng bạn có các tùy chọn hả hê đúng được đặt trong vỏ của bạn. Đối với bash chạy shopt -s extglobvà sử dụng zsh setopt ksh_glob. Sau đó, một cái gì đó như thế này:

scp /path/to/folder/!(tiny_mce|other_folder|*.bak) user@host:target_path

... sẽ sao chép mọi thứ trong thư mục nguồn ngoại trừ những thứ khớp với mẫu đã cho. Rõ ràng bạn có thể sáng tạo với phần đó.


7

rsync là một giải pháp tốt, nhưng nếu bạn đang tìm kiếm một giải pháp thay thế:

Giả sử, chúng ta có một thư mục "test" chứa các thư mục "foo, bar, baz". Trong các thư mục này là một loạt các loại tệp khác nhau:

test
|____bar
| |____1.jpg
| |____1.png
| |____1.txt
| |____2.jpg
| |____2.png
| |____2.txt
|____baz
| |____1.avi
| |____2.avi
| |____3.png
|____foo
| |____test.blah
|____test.txt

Chúng tôi muốn sao chép mọi thứ trừ các PNG

scp $(find /location/of/test -type f ! -name "*.png") # -> Note the logical NOT!!

Trong ví dụ này, lệnh sẽ đặt tất cả các tệp vào cùng một thư mục đích - đây có thể không phải là hành vi bạn muốn.


1
Lưu ý rằng câu trả lời này chỉ hoạt động nếu tên tệp và thư mục liên quan không chứa bất kỳ ký tự đặc biệt nào (khoảng trắng hoặc \[*?).
Gilles 'SO- đừng trở nên xấu xa'

3

Một công cụ tuyệt vời mà bạn có thể muốn dùng thử là "lftp".

lftp sftp://etc.etc/ 
lftp> ls 
    --- remote listing ---
lftp> mirror -R -n local/ remote/

Bạn cũng có thể sử dụng RSync trên ssh

rsync -avzp -e ssh /this/dir/  remoteuser@remotehost:/remote/dir/

Nên làm việc.


0

Tôi vừa viết xong cách tôi thích unison để rsync bất cứ ngày nào, vì nó

  • không cần daemon, ngoài ssh để vận chuyển
  • cho phép tôi sửa đổi các tệp ở hai bên bất cứ lúc nào-- nhiều chủ dễ dàng, trong khi tôi chỉ cần đẩy một yêu cầu đồng bộ hóa từ một phía
  • Tôi là một stickler khi nói đến modtimes, thuộc tính / quyền, liên kết mềm, vv Không có vấn đề với điều đó; Đối với một dự án tôi thậm chí sử dụng 4 gương, một gương là máy chủ cygwin. Xem ví dụ thiết lập crontab của tôi.
  • hỗ trợ loại trừ như *.bak. Các mẫu trong tập tin cấu hình của tôi

0

Sử dụng Sao chép an toàn - scp

scp -r file user@host:

Sao chép nhiều tập tin

scp /directory/* user@host:destinationPath

Để sao chép một số tập tin

scp /directory/!(*.doc) user@host:destinationPath

Nó sao chép nội dung của thư mục ngoại trừ các tệp .doc


0

Tôi chắc chắn sẽ khuyên bạn rsync.

rsync -vra --exclude = "những gì bạn muốn loại trừ" -e ssh thư mục người dùng @ remotehost: / thư mục


0

Đây là những gì làm việc cho tôi khi tôi chạy nó từ máy chủ đích.

rsync -av --progress user@servername:/sourcefolder /destinationfolder --exclude thefoldertoexclude

0

Chúng tôi có thể làm điều đó trong hai bước để bỏ qua tiny_mcethư mục. Giả sử tất cả các thư mục bắt đầu bằng chữ in thường.

scp -r USER@HOSTNAME:~/FOLDER/[a-s]* .
scp -r USER@HOSTNAME:~/FOLDER/[u-z]* .

Ngoài ra, thay đổi USER, HOSTNAME và FOLDER thành các giá trị thực.

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.