ssh|tar를 사용하여 원격 파일을 archive.tar.gz에 백업합니다.

ssh|tar를 사용하여 원격 파일을 archive.tar.gz에 백업합니다.

이 명령을 사용하여 ssh user@remote -p 22 "tar cz my-folder" | tar xz -C /d/local-backups원격 폴더를 로컬 드라이브에 백업하고 있습니다.

잘 작동하고 폴더 구조가 내 로컬 드라이브에서 동일하게 복제됩니다. 그러나 파일을 추출하고 똑같은 폴더 구조를 다시 생성하는 대신 파일을 아카이브에 추가하는 것이 가능합니까?

나는 비슷한 것을 시도했지만 ssh user@remote -p 22 "tar cz my-folder" | tar rz -C /d/local-backups/arcive.tar.gz운이 없었습니다.

편집하다 이것은 명령을 사용한 콘솔 출력입니다.

`ssh user@remote -p 22 "tar cz my-folder" | tar rvf -C /d/local-
backups/archive.tar.gz`

/d/local-backups/archive.tar.gz
tar: Removing leading `/' from member names
/d/local-backups/archive.tar.gz
tar: Removing leading `/' from hard link targets

명령을 실행하기 전에 archive.tar.gz(내부에 텍스트 파일 포함)를 생성해 보았지만 아카이브가 존재하는데도 파일이 들어가지 않습니다.

내 서버에서 검색된 모든 파일을 포함하는 "archive.tar.gz" 파일을 끝에 하나만 두는 방법이 있습니까?

답변1

첫 번째 단계 명령의 아이디어에 따라 원격 시스템에 아카이브를 생성합니다.

ssh user@remote -p 22 "tar cz my-folder" 

그런 다음 로컬 컴퓨터로 추출합니다.

| tar xz -C /d/local-backups
-C - change directory to "/local-backups" before performing an operation.

이것이 이론적으로 이 명령을 사용하여 로컬 컴퓨터에 아카이브를 가질 수 없는 이유입니다. 그러나 어쨌든 그것을 추출하는 것보다 훨씬 간단합니다. 원격 시스템에 아카이브를 생성하고 로컬 시스템에 아카이브를 저장하려는 경우 다음을 사용할 수 있습니다.

ssh user@remote -p 22 "tar cz my-folder" > /tmp/archive.tar.gz

이 명령은 아카이브를 생성합니다. 그 후 결과를 확인할 수 있습니다

$ tar -tvf archive.tar.gz
drwxr-xr-x zidercol/users    0 2021-12-20 18:10 Temp/
-rw-r--r-- zidercol/users  270 2021-12-20 18:10 Temp/T0

관련 정보