Hướng dẫn copy thư mục local tới máy từ xa trên Linux

0
hướng dẫn copy folder remote tới local

Có nhiều cách thức để copy file và thư mục từ một máy tới những máy khác trong Linux. Trong bài viết này, mình sẽ chia sẻ cho các bạn các lệnh và tham số để copy thư mục từ máy local đến máy chủ từ xa trên Linux.

Copy thư mục local tới remote server

Bạn có thể dùng ssh hoặc rsync để copy thư mục từ local đến remote server trên cùng hoặc khác directory. Nếu bạn muốn thực hiện việc truyền dữ liệu song song, bạn phải dùng pscp hoặc pssh bởi theo mặc định scp hoặc ssh sẽ truyền dữ liệu tuần tự. Nếu bạn đã cấu hình key đăng nhập giữa các server của bạn, thì scp/ssh sẽ không nhắc bạn nhập password và sẽ truyền file từ một server đến server khác một cách liền mạch. Điều này rất hữu ích cho automation.

Sử dụng scp để copy folder

Scp là gì?

scp là một công cụ copy từ xa an toàn được sử dụng để copy files và folders từ local tới remote hoặc là từ remote tới local server trên Linux. Nếu bạn sử dụng công cụ scp mà không có tham số “-r”, khi đó công cụ chỉ có thể copy files từ local tới remote server.

Cú pháp sử dụng

scp -r <path to dir on localhost> user@<host>:<path on remote host>/

Ví dụ: giờ mình sẽ copy toàn bộ directory /tmp/deepak từ localhost tới remote server tại vị trí /home/temp/ .Bên dưới là liệt kê file và folder của /tmp/deepak, như vậy mình sẽ copy tất cả file và folder tới remote server.

server-test1:~ # ls -l /tmp/deepak/
total 8
-rw-r----- 1 root root    0 May 10 13:38 file1
-rw-r----- 1 root root    0 May 10 13:38 file2
-rw-r----- 1 root root    0 May 10 13:38 file3
drwxr-x--- 2 root root 4096 May 10 13:39 test1
drwxr-x--- 2 root root 4096 May 10 13:39 test2

Sử dụng lệnh dưới đây để copy từ local tới remote server

server1:~ # scp -r /tmp/deepak check@10.10.13.20:/home/temp/
Password:
file1                                                                                                                                       100%    0     0.0KB/s   00:00
file3                                                                                                                                       100%    0     0.0KB/s   00:00
file2

Tiếp theo xác nhận truyền dữ liệu thành công trên máy từ xa

server2:~ # ll /home/temp/deepak/
total 8
drwxr-x--- 2 temp users 4096 May 10 16:50 test1
-rw-r----- 1 temp users    0 May 10 16:50 file1
drwxr-x--- 2 temp users 4096 May 10 16:50 test2
-rw-r----- 1 temp users    0 May 10 16:50 file3
-rw-r----- 1 temp users    0 May 10 16:50 file2

Nếu bạn muốn copy toàn bộ nội dung từ /tmp/deepak tới máy từ xa trên cùng directory name, dùng cú pháp dưới đây:

scp -r <path to dir on localhost>/* user@<host>:<path on remote host>/

Chạy câu lệnh bên dưới

server1:~ # scp -r /tmp/deepak/* temp@10.10.13.20:/home/temp/rahul/
Password:
file1                                                                                                                                       100%    0     0.0KB/s   00:00
file2                                                                                                                                       100%    0     0.0KB/s   00:00
file3                                                                                                                                       100

File và folder của chúng ta đã được copy tới máy từ xa thành công. Xác nhân nội dung trên máy từ xa

server2:~ # ls -l /home/temp/rahul/
total 8
-rw-r----- 1 temp users    0 May 10 16:54 file1
-rw-r----- 1 temp users    0 May 10 16:54 file2
-rw-r----- 1 temp users    0 May 10 16:54 file3
drwxr-x--- 2 temp users 4096 May 10 16:54 test1
drwxr-x--- 2 temp users 4096 May 10 16:54 test2

Sử dụng rsync để copy thư mục

Rsync là gì?

rsync là sự lựa chọn khác thay thế cho scp để copy file and thư mục từ local tới remote server.

Cú pháp

rsync -avz <path to dir on localhost> user@<host>:<path on remote host>/

Tương tự như scp, mình sẽ dùng rsync để thực hiện truyền thư mục. Để copy toàn bộ địa chỉ thư mục (deepak) từ /tmp tới remote host tại /home/temp

server1:~ # rsync -avz /tmp/deepak temp@10.10.13.20:/home/temp/
Password:
sending incremental file list
deepak/
deepak/file1
deepak/file2
deepak/file3
deepak/test1/
deepak/test2/
deepak/test2/

sent 240 bytes  received 81 bytes  49.38 bytes/sec
total size is 0  speedup is 0.00

Xác minh dữ liệu có trên server 2

server2:/home/temp # ll /home/temp/deepak/
total 8
-rw-r----- 1 temp users    0 May 10 16:38 file3
-rw-r----- 1 temp users    0 May 10 16:38 file2
-rw-r----- 1 temp users    0 May 10 16:38 file1
drwxr-x--- 2 temp users 4096 May 10 16:39 test2
drwxr-x--- 2 temp users 4096 May 10 16:39 test1


Tiếp theo, mình sẽ copy nội dung của /tmp/deepak tới một thư mục khác trên máy từ xa tại /home/temp/quangvublog

Cú pháp

rsync -avz <path to dir on localhost>/* user@<host>:<path on remote host>/

Tiếp theo thực thi câu lệnh theo cú pháp

server1:~ # rsync -avz /tmp/deepak/* temp@10.10.13.20:/home/temp/quangvublog/
Password:
sending incremental file list
file1
file2
file3
test1/
test2/

sent 195 bytes  received 77 bytes  108.80 bytes/sec
total size is 0  speedup is 0.00

Xác minh dữ liệu trên máy từ xa

server2:/home/temp # ls -l /home/temp/quangvublog/
total 8
--r----- 1 temp users    0 May 10 16:38 file1
-rw-r----- 1 temp users    0 May 10 16:38 file2
-rw-r----- 1 temp users    0 May 10 16:38 file3
drwxr-x--- 2 temp users 4096 May 10 16:39 test1
drwxr-x--- 2 temp users 4096 May 10 16:39 test2

Copy nội dung từ máy từ xa đến máy local

Tiếp theo mình sẽ hướng dẫn các bạn các lệnh và cú pháp để copy thư mục từ máy từ xa đến máy local. Để copy, chúng ta có thể dùng các lệnh tương tự như scp hoặc rsync. Cú pháp chỉ thay đổi từ destination thành sourcesource thành destination thôi.

Copy sử dụng scp

Cú pháp

scp -r <user>@<host>:<source path on remote host> <destination on localhost>

Bên dưới là nội dung trên máy từ xa tại /home/temp/deepak mà mình muốn copy tới vị trí local tại /tmp/deepak

server2:~ # ls -l /home/temp/deepak/
total 8
-rwxrwxrwx 1 root root    0 May 11 00:21 file1
-rwxrwxrwx 1 root root    0 May 11 00:21 file2
-rwxrwxrwx 1 root root    0 May 11 00:21 file3
drwxrwxrwx 2 root root 4096 May 11 00:21 test1
drwxrwxrwx 2 root root 4096 May 11 00:21 test2

Bên dưới là lệnh được thực hiện để copy folder từ remote đến local

server1:~ # scp -r temp@10.10.13.20:/home/temp/deepak /tmp/
Password:
file2                                                                                                                                       100%    0     0.0KB/s   00:00
file3                                                                                                                                       100%    0     0.0KB/s   00:00
file1     

Xác minh nội dung

server1:~ # ls -l /tmp/deepak/
total 8
-rwxr-x--- 1 root root    0 May 11 00:22 file1
-rwxr-x--- 1 root root    0 May 11 00:22 file2
-rwxr-x--- 1 root root    0 May 11 00:22 file3
drwxrwxrwx 2 root root 4096 May 11 00:22 test1
drwxrwxrwx 2 root root 4096 May 11 00:22 test2

Copy folder sử dụng rsync

Tương tự như các sử dụng rsync bên để copy folder từ local tới remote

Cú pháp

scp -r <user>@<host>:<source path on remote host> <destination on localhost>

Dùng lệnh bên dưới để copy folder từ remote tới local

server1:~ # rsync -avz temp@10.10.13.20:/home/temp/deepak /tmp/
Password:
receiving incremental file list
deepak/
deepak/file1
deepak/file2
deepak/file3
deepak/test1/
deepak/test2/

sent 80 bytes  received 261 bytes  136.40 bytes/sec
total size is 0  speedup is 0.00

Cuối cùng, mình hy vọng các bước từ bài viết ssh copy thư mục từ local đến remote và remote tới local sử dụng scp và rsync trên Linux thực sự hữu ích.

5/5 (1 Review)