소유권을 유지하면서 한 시스템에서 다른 시스템으로 큰 트리를 복사합니다.

소유권을 유지하면서 한 시스템에서 다른 시스템으로 큰 트리를 복사합니다.

컴퓨터 간에 큰 폴더 구조를 복사하려고 합니다. 사실 이후에 권한을 "수정"하는 것은 불합리하므로 복사 과정에서 소유권/권리를 유지하고 싶습니다.

그래서 다음 명령을 사용하여 전체 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를 사용하여 즉시 스트림을 압축할 수도 있습니다.

관련 정보