내가 원한다고 가정 해 봅시다 :
서버 A의 디렉토리에서 tarball 만들기
이 타르볼을 서버 B에 복사하세요.
서버 B에서 압축을 푼다
ssh root@serverB " scp root@serverA:/var/www/dirs.tar.gz /var/www/dirs.tar.gz && tar -xvf /var/www/dirs.tar.gz
파이프를 사용하여 경로가 중복되는 것을 피하고 싶습니다. 두 번째 매개변수를 얻으려면 PIPE를 사용하여 올바르게 작성하려면 어떻게 해야 합니까?
감사해요
답변1
디렉토리를 압축하고 원격 서버에 복사한 다음 거기에서 압축을 풀까요? 글쎄요 scp -r directory ...
, rsync -r directory ...
아니면 sftp
훨씬 낫습니다.
tar 파일을 원격 서버에 복사하고 추출하려면 다음을 시도하십시오.
tar -cf - mydir | ssh [email protected] 'bash -c "tee archive.tar | tar -xf -"'
여기서 핵심은 tee
tar 파일의 복사본을 원격 파일 시스템에 넣고 tar 파일을 tar 명령에 전달하여 압축을 푼다는 것입니다.
아마도 덜 복잡한 해결책은 rsync
tar 파일을 생성할 수 있는 원격 서버로 디렉터리를 전송하는 것일 수 있습니다.
답변2
타르볼을 어떻게 생성하는지 알 수 없고, 별도의 단계가 필요하지만 tar
파일을 생성/사용할 필요가 없는 경우에는 다음과 같이 하면 됩니다.
ssh serverA tar cz file… | tar xz
(이해를 돕기 위해 귀하가 이미 root@serverB라고 가정하고 올바른 디렉토리에 있는지 확인하는 등의 사항은 생략했습니다.)