banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Vài cách copy file qua mạng giữa các máy dùng UNIX/LINUX  XML
  [Question]   Vài cách copy file qua mạng giữa các máy dùng UNIX/LINUX 21/11/2007 06:53:40 (+0700) | #1 | 98981
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Nguồn:
http://www.crucialp.com/resources/tutorials/server-administration/how-to-copy-files-across-a-network-internet-in-unix-linux-redhat-debian-freebsd-scp-tar-rsync-secure-network-copy.php 

Một trong những thuận lợi của việc dùng Linux/UNIX là có rất nhiều cách để thực hiện một việc. Bài viết này sẽ chỉ cho bạn những cách copy files qua mạng dùng scp, rsync, tar. Tất cả các cách ở đây đều dùng ssh - nó bảo mật và đáng tin cậy hơn là rcp hoặc ftp.

1. scp
scp (hay còn gọi là secure copy) là một trong những cách đơn giản nhất, nó được thiết kế để thay thế cho rcp
Cú pháp:
Code:
scp [-Cr] /some/file [ more ... ] host.name:/destination/file

Code:
scp [-Cr] [[user@]host1:]file1 [ more ... ] [[user@]host2:]file2


Trước khi scp copy bất cứ file nào, nó sẽ kết nối qua ssh trước, sau đó hộp thoại nhắc username sẽ xuất hiện.
Tùy chọn -r được sử dụng khi bạn muốn copy "đệ quy" (recursively) trong thư mục.
scp mã hóa dữ liệu qua kết nối mạng của bạn, nhưng nếu sử dụng tuỳ chọn -C bạn có thể nén dữ liệu trước khi gửi qua mạng. Điều này có thể làm giảm thời gian khi bạn copy những file lớn.
Theo mặc định thì scp sử dụng thuật toán mã hoá 3DES

Khi nào thì không nên dùng scp:
1. Khi bạn copy nhiều file, scp sẽ tạo một tiến trình mới cho mỗi file và có thể khá chậm khi copy
2. khi sử dụng tuỳ chọn -r, scp không biết về symbolic link và sẽ mù quáng làm theo, thậm chí nếu nó đã tạo một bản copy của file đó rồi.

Ví dụ:

$ scp -C quanta@192.168.1.3:/home/quanta/openvpn-2.0.9.tar.gz /home/quanta
quanta@192.168.1.3's password:
openvpn-2.0.9.tar.gz 100% 653KB 653.4KB/s 00:00
 


$ scp -C /home/quanta/Lesson.odt quanta@192.168.1.3:/home/quanta
quanta@192.168.1.3's password:
Lesson.odt 100% 19KB 18.6KB/s 00:00
 

2. rsync: tương tự cú pháp của scp
Code:
rsync -e ssh [-avz] /some/file [ more ... ] host.name:/destination/file

Code:
rsync -ave ssh source.server:/path/to/source /destination/dir


Điểm đặc biệt của rsync là khả năng phân tích các file và chỉ copy những phần thay đổi chứ không copy lại toàn bộ các files.
-a: Archive mode
-v: Verbose: liệt kê file được copy
-z: Enable compression
-e: ssh sử dụng ssh làm phương tiện copy

Điểm bất lợi của rsync:
+ Cú pháp dài dòng
+ Phải nhớ rằng bạn đang sử dụng ssh

Ví dụ:

$ rsync -e ssh -avz quanta@192.168.1.3:/home/quanta/openvpn-2.0.9.tar.gz /home/quanta
quanta@192.168.1.3's password:
receiving file list ... done
openvpn-2.0.9.tar.gz

sent 42 bytes received 669440 bytes 191280.57 bytes/sec
total size is 669076 speedup is 1.00
 


$ rsync -e ssh -avz list.txt quanta@192.168.1.3:/home/quanta
quanta@192.168.1.3's password:
building file list ... done
list.txt

sent 1065 bytes received 42 bytes 316.29 bytes/sec
total size is 2775 speedup is 2.51
 

3. tar: luôn luôn được sử dụng cho các ứng dụng nén. tar có thể xử lý một cây thư mục lớn khá tốt mà vẫn đảm bảo file permissions.
Cú pháp:
Code:
tar -cf - /some/file | ssh host.name tar -xf - -C /destination

Code:
tar -czf - /some/file | ssh host.name tar -xzf - -C /destination

Tuỳ chọn -c tạo một archive và tuỳ chọn -f sẽ nói với tar là send archive đó đến stdout
Tuỳ chọn -C để thay đổi thư mục trên host đích. Nó lấy input từ stdin. Tuỳ chọn -x sẽ extracts archive

Cú pháp thứ 2 được dùng khi chuyển giao qua mạng với tuỳ chọn -z để nén luồng dữ liệu lại, làm giảm thời gian khi chuyển giao qua mạng.
Nếu sử dụng -v (verbose) hãy crhắc chắn rằng bạn đang dùng cú pháp thứ 2, nếu không sẽ bị "đúp" output.
Sử dụng tar và piping cũng là một cách hay để copy file trên local và file permissions vẫn giữ đúng

Tại sao tar không nên được dùng:
1. cú pháp có thể khó nhớ
2. Nó không nhanh bằng scp khi copy ít file

Có một vài cách khác để copy file qua mạng, như là FTP, NAS, hoặc NFS nhưng tất cả chúng đều yêu cầu những phần mềm chuyên dụng phải được cài trên máy "nhận", hoặc máy "gửi" cuối, hơn nữa chúng không hữu ích như những lệnh trên.

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Một vài cách copy file qua mạng dùng UNIX/LINUX 21/11/2007 07:01:44 (+0700) | #2 | 98982
[Avatar]
K4i
Moderator

Joined: 18/04/2006 09:32:13
Messages: 635
Location: Underground
Offline
[Profile] [PM]
Hi, quanta. Theo mình thì bạn nên chỉ rõ ra copy file qua mạng từ đâu đến đâu. Từ *nix đến *nix hay từ *nix đến Windows.

Một điều nữa, tất cả các câu lệnh trên đều không thể thực hiện được nếu máy chứa file cần copy không bật ssh

:d
Sống là để không chết chứ không phải để trở thành anh hùng
[Up] [Print Copy]
  [Question]   Re: Vài cách copy file qua mạng giữa các máy dùng UNIX/LINUX 21/11/2007 12:42:35 (+0700) | #3 | 99033
[Avatar]
mudzot
Elite Member

[Minus]    0    [Plus]
Joined: 26/06/2006 14:41:27
Messages: 76
Offline
[Profile] [PM]
Dùng qua ssh thì tiện lợi nhất là dùng http://fuse.sourceforge.net/sshfs.html . Mount và dùng như local luôn.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|