Tôi cần chuyển tập tin từ máy chủ CentOS này sang máy chủ khác. Sẽ chuyển các tệp 5MB cứ sau 10 phút. Không cần mã hóa.
Một cách dễ dàng để chuyển tập tin nhanh là gì?
Có cái gì đơn giản hơn ftp?
Cảm ơn!
Tôi cần chuyển tập tin từ máy chủ CentOS này sang máy chủ khác. Sẽ chuyển các tệp 5MB cứ sau 10 phút. Không cần mã hóa.
Một cách dễ dàng để chuyển tập tin nhanh là gì?
Có cái gì đơn giản hơn ftp?
Cảm ơn!
Câu trả lời:
rsync
Tôi sẽ sử dụng rsync trước khi tôi sử dụng ftp hoặc tftp.
Nhiều lựa chọn hơn và (theo kinh nghiệm của tôi) chuyển giao đáng tin cậy hơn.
tar over ssh là được, nhưng tar qua TCP thông qua netcat là về chi phí thấp như bạn có thể nhận được! Nếu đây là việc một lần, hãy thử cách này:
Trên máy thu:
nc -l -p 8989 | tar x
Trên người gửi:
tar cf - /source-path | nc (receiving host ip address) 8989
Nếu đây là việc bạn sẽ làm thường xuyên, có lẽ tôi sẽ sử dụng rsync.
Hai người đã đề cập đến tar trên ssh, nhưng không nói làm thế nào để làm điều đó. Đối với bản ghi, thủ tục cơ bản là chạy:
tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'
Hoặc, nếu bạn muốn bắt đầu chuyển từ đầu nhận:
ssh remotehost 'cd /source && tar cf - files' | tar xvf -
Ưu điểm của việc thực hiện theo cách này so với giải pháp netcat của Evan là toàn bộ mọi thứ có thể được bắt đầu từ một máy tính; bạn không phải phối hợp hai lời mời netcat. Nếu bạn cần điều này để chạy tự động, bạn có thể thiết lập khóa ssh cho phép bạn tạo kết nối mà không cần cụm mật khẩu và sử dụng phím đó cho các kết nối này.
ssh có tùy chọn -C để nén luồng dữ liệu của nó hoặc bạn có thể sử dụng khả năng nén dựng sẵn của GNU tar:
tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'
Rsync là một tùy chọn khác, nhưng phù hợp mạnh mẽ của nó là trong việc cập nhật các tệp đã tồn tại ở đầu nhận. Tôi đã thấy nó chậm hơn scp hoặc tar / ssh khi sử dụng nó để truyền các tệp không tồn tại ở đầu bên kia.
Tôi thực sự sử dụng scp
hoặc tar
hơn ssh
. Việc mã hóa làm mọi thứ chậm lại, nhưng sự dễ dàng thiết lập và sử dụng, độ tin cậy và (chủ quan, tất nhiên) làm cho tôi sẵn sàng thực hiện cú đánh, trừ khi tôi thực sự cần tốc độ đó.
Bạn cũng có thể tăng tốc độ chuyển ssh bằng cách yêu cầu nó sử dụng mật mã nhanh hơn mặc định. Mặc định thường là 3des
và bạn thường có thể làm -c des
, vì vậy điều đó rõ ràng sẽ nhanh hơn và -c blowfish
cũng được thể hiện nhanh như vậy, mặc dù tôi đã không kiểm tra chính xác.
(Quay lại thời của SSHv1, bạn có thể thường xuyên làm điều đó -c none
, nhưng tôi đoán ai đó đã quyết định rằng đó là juju tồi.)
Nếu bạn phải trải qua scp / ssh, các thử nghiệm của tôi cho thấy rằng mật mã nhanh nhất được bật theo mặc định những ngày này là RC4. Bạn chỉ định mật mã thông qua ' -c arcfour ' trong lệnh ssh / scp của bạn:
cho bản sao ban đầu:
scp -c arcfour -r foo/ desthost:/destdir
để cập nhật:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir
Rsync là một cách tốt để đi bởi vì nếu bạn thấy mình chuyển cùng một tệp nhiều lần, nó sẽ tăng tốc độ sao chép, như được hiển thị với trích dẫn này từ trang man.
rsync is a program that behaves in much the same way that rcp does, but
has many more options and uses the rsync remote-update protocol to
greatly speed up file transfers when the destination file is being
updated.
The rsync remote-update protocol allows rsync to transfer just the dif-
ferences between two sets of files across the network connection, using
an efficient checksum-search algorithm described in the technical
report that accompanies this package.
FTP khá đơn giản, nhưng một cách thậm chí đơn giản hơn có thể là tạo một chia sẻ NFS trên một máy và gắn nó trên máy kia. Sau đó, sao chép các tập tin sẽ bao gồm thực hiện một cp từ thư mục này sang thư mục khác.
Nếu bạn muốn tốc độ, bạn có thể sử dụng netcat và tar. Nó sẽ nhanh hơn ssh, rsync hoặc scp trên mạng cục bộ nơi mã hóa không phải là vấn đề đáng lo ngại. Google "netcat tar".
nc -l -p 7878 | tar -C /target/dir -xzf -
tar -cz /source/dir | nc DestinationServer 7878
Điều này rõ ràng đòi hỏi netcat thực sự được cài đặt. Google "netcat tar" để biết thêm.
Tôi tin rằng bạn đã giải quyết vấn đề của mình nhưng trong trường hợp ssh của bạn hoạt động trên một cổng khác (không phải trên cổng tiêu chuẩn 22), bạn có thể sử dụng điều này
rsync -avz --rsh = 'ssh -pXXXXX' / local / dir / root@192.168.1.2: / remote / dir
Lưu ý: - thay thế XXXXX bằng số cổng của bạn - thay thế 192.16.1.2 bằng IP máy chủ từ xa chính xác
https://www.npmjs.org/package/gist-cli
https://github.com/sinstall/appluggest#personal-access-tokens
hoặc cái này:
https://github.com/defunkt/gist
Sử dụng lệnh chính để tải lên và tải xuống