1. SCP (Secure Copy)
ssh 원격 접속 프로토콜을 기반으로 원격지에 있는 파일과 디렉터리를 보내거나 가져올 때 사용하는 파일 전송 프로토콜이다.
사용법
scp [옵션] [원격이나 로컬에서 복사할 파일] [원격지_id]@[원격지_ip]:[받는 위치] |
옵션
옵션 | 설명 |
-r | 디렉토리의 내용물까지 복사 |
-v | 과정을 자세히 보여준다 |
happy.txt 보내기
[root@rocky1 ~]# scp happy.txt rocky2:/tmp #rocky2의 tmp디렉토리에 보내기 root@rocky2's password: happy.txt 100% 0 0.0KB/s 00:00 [root@rocky1 ~]# ssh rocky2 ls -l /tmp/happy.txt # 확인 root@rocky2's password: -rw-r--r--. 1 root root 0 May 12 12:50 /tmp/happy.txt |
-r
# test 디렉토리를 생성하고 그 안에 파일을 생성을 미리 해야한다. [root@rocky1 ~]# scp -r test rocky2:/root #-r 옵션으로 복사 root@rocky2's password: hi.txt 100% 5 7.2KB/s 00:00 test.txt 100% 5 8.2KB/s 00:00 [root@rocky1 ~]# ssh rocky2 ls -R root@rocky2's password: .: test ./test: hi.txt test.txt # test 디렉토리 안에 파일들도 복사가 되었다. |
원격에서 파일 복사하기
[root@rocky1 .ssh]# scp rocky2:/etc/ssh/sshd_config /tmp sshd_config 100% 3623 2.4MB/s 00:00 [root@rocky1 .ssh]# cd /tmp [root@rocky1 tmp]# ls sshd_config |
이름을 변경하여 복사하기
[root@rocky2 ~]# ls Documents Downloads Music Pictures Videos anaconda-ks.cfg hi.txt test #rocky2 디렉토리 내부 [root@rocky2 ~]# exit #로그아웃 Connection to rocky2 closed. [root@rocky1 ~]# ls A Documents Downloads Music Pictures Videos hi.txt test [root@rocky1 ~]# scp A rocky2:/root/B #A를 B로 이름을 바꿔 복사 A 100% 0 0.0KB/s 00:00 [root@rocky1 ~]# ssh rocky2 ls B Documents Downloads Music Pictures Videos anaconda-ks.cfg # A가 B로 복사되었다. |
2. rsync (remote synchronous)
파일과 디렉토리를 동기화 하기 위한 프로토콜이자 리눅스 유틸리티 명령어 이다
이 명령어를 통해 로컬에 있는 파일이나 디렉토리를 원격 서버에 전송하거나 원격에서 다운로드 할 수 있다. 또한 scp 와는 다르게 그룹 및 소유권 및 허가권도 유지하여 복사하여 파일을 가져올수 있다.
(리눅스 최소권장으로 서버를 설치했을시에는 깔려있지 않을수도있다. dnf install rsync 로 다운받을 수 있다.)
사용법
rsync [option][source][destination] |
옵션
옵션 | 설명 |
-v | 자세한 정보를 출력한다.(--verbose) |
-z | 데이터를 압축하여 송수신 한다.(--compress) |
-a | -rlptgoD를 한번에 실행 할 때 사용 (--archive) |
-h | 용량을 사람이 보기 편한 단위로 출력해 준다. |
-u | 소스 경로보다 최신 파일이 이미 있는 경우 가져오지 않는다.(--update) |
--delete | 송신측에서 없는 파일이 수신측의 백업 디렉토리에 존재시 삭제 |
-avh : 대표적으로 많이쓰는 옵션으로 데이터를 압축하여 보낼때 사용
a - 원본 파일의 권한, 소유자, 그룹, 시간 정보를 그대로 유지하며, 하위 디렉토리까지 모두 복사
v - 자세한 출력 모드로 진행 상황과 파일 복사 정보를 화면에 출력한다.
h - 파일 크기를 읽기 쉬운 형태(KB, MB, GB 등)로 출력하게 된다.
rsync 예시
[root@rocky1 ~]# rsync hi.txt rocky2:/root #hi.txt를 rocky2로 복사 [root@rocky1 ~]# ssh rocky2 ls -l 합계 24 ... -rw-r--r--. 1 root root 3 5월 8 17:47 hi.txt |
-avh예시
[root@rocky2 ~]# rsync -avh /root/ rocky1:/root/ #루트홈 디렉토리를 동기화 시킵니다. . . . sent 88.73M bytes received 56.52K bytes 19.73M bytes/sec total size is 88.46M speedup is 1.00 [root@rocky2 ~]# ssh rocky1 #서버로 이동하여 root@rocky1's password: Last login: Mon May 8 14:58:30 2023 from 192.168.72.128 [root@rocky1 ~]# ll #리스트로 확인해보면 파일이 동기화 된것을 알 수있다. rwxr-xr-x. 2 root root 6 4월 24 16:44 Desktop . . . drwxr-xr-x. 2 root root 6 4월 24 16:44 Videos |
-azh 예시
[root@rocky2 tmp]# rsync -azvh /root/ rocky1:/root/ #루트홈 디렉토리를 압축하여 동기화 시킵니다. root@rocky1's password: sending incremental file list sent 130.75K bytes received 528 bytes 37.51K bytes/sec total size is 88.46M speedup is 673.88 |
결과는 크게 다르지않지만 디렉토리가 많을때나 압축시 효율이 좋을때 사용한다.
(때로는 압축시간이 있어서 더많은시간이 걸릴 수 도있다.)
3. sftp (Secure File Transfer Protocol)
ssh를 기반으로 하는 파일 전송 프로토콜
로컬에 대한 명령은 앞에 l을 붙여 사용한다. 예를 들어 pwd -> lpwd
옵션
명령 | 설명 |
bye | sftp 세션을 종료한다. |
get | 원격 작업 디렉토리에서 로컬 작업 디렉토리로 파일을 복사한다. |
put | 로컬 작업 디렉토리에서 원격 작업 디렉토리로 파일을 복사한다. |
옵션 | 설명 |
-r | 디렉토리를 복사한다. |
접속
[root@rocky1 tmp]# sftp rocky2 #username@ip Connected to rocky2. sftp> |
원격 접속 위치와 로컬 위치 확인
sftp> pwd Remote working directory: /root sftp> lpwd #로컬 명령어는 앞에 l을 붙인다. Local working directory: /tmp |
get [가져올 파일명]
sftp> get happy.txt Fetching /root/happy.txt to happy.txt happy.txt 100% 6 4.3KB/s 00:00 |
put [업로드할 파일명]
sftp> put sad.txt Uploading sad.txt to /root/sad.txt sad.txt 100% 4 7.7KB/s 00:00 |
'리눅스-기초명령어 > 파일 관리' 카테고리의 다른 글
tar (1) | 2023.09.01 |
---|---|
dd(data dumper) (0) | 2023.09.01 |