컴퓨터 간에 큰 폴더 구조를 복사하려고 합니다. 사실 이후에 권한을 "수정"하는 것은 불합리하므로 복사 과정에서 소유권/권리를 유지하고 싶습니다.
그래서 다음 명령을 사용하여 전체 privs 파일을 tar하고 데이터를 대상 컴퓨터로 전송했습니다. 두 시스템 모두에 동일한 사용자가 존재합니다.
tar cfzp - foldertocopy | ssh me@machine "cat > /applications/incoming/foldertocopy.tar.gz"
전송이 제대로 작동합니다. 다음 단계는 원격 시스템에서 루트 권한을 사용하고 파일을 추출하는 것입니다.
문제는 다음과 같습니다압축된 데이터와 압축되지 않은 데이터를 모두 저장할 디스크 공간이 부족합니다..
rsync/recursive scp를 사용할 수 있지만 사용자에게 올바른 권한으로 파일 자체를 생성할 수 있는 권한이 없으며 루트가 원격으로 로그인할 수 없습니다.
내 옵션은 무엇입니까? 원본 컴퓨터는 RHEL4이고 대상 컴퓨터는 RHEL5입니다.
답변1
명명된 파이프를 루트로 설정합니다.
# mkfifo /tmp/fifo
# chmod o+w /tmp/fifo
그런 다음 데이터를 다음과 같이 전송하십시오 me
.
$ tar cfzp - foldertocopy | ssh me@machine "cat > /tmp/fifo"
하지만 다음과 같이 읽어보세요 root
.
# tar -xfzp /tmp/fifo
답변2
이 문제를 해결하는 한 가지 방법은 ssh가 untar를 직접 실행하도록 하는 것입니다.
tar cfzp - foldertocopy | ssh me@machine "cd rightplace; tar xzf -"
답변3
아카이브 rsync를 사용하지 않는 이유는 무엇입니까?
rsync -avzHAX foldertocopy user@remoteserver:/file/path/to/copy
이렇게 하면 파일에 대한 모든 세부 정보를 저장할 수 있고 "z" rsync를 사용하여 즉시 스트림을 압축할 수도 있습니다.