bsdtar를 사용하여 두 Linux 서버 간에 파일을 복사하는 가장 빠른 방법을 찾고 있습니다.
일반 tar의 경우 다음과 같은 작업을 수행합니다.
ssh root@remote 'tar -cz -C /my/path/ big_file.txt' | tar -zxv
그러나 "tar"를 "bsdtar"로 바꾸는 것만으로는 작동하지 않는 것 같습니다.
그래서 내 질문은 다음과 같습니다.
- bsdtar를 사용하여 이 작업을 어떻게 수행할 수 있나요?
- gzip을 사용하는 대신 pbzip2와 같이 압축/압축 해제를 위해 여러 코어를 사용할 수 있는 것을 사용하고 싶습니다. 어떻게 입력하나요?
- 이름이 변경된 임시 파일을 사용하지 않고 대상 서버에서 "big_file.txt" 파일이 "hello_world.txt"로 호출되기를 원합니다. 어떻게?
업데이트 1:
나는 첫 번째 문제를 직접 해결했습니다.
ssh root@localhost 'bsdtar -cz -f - -C /my/path/ big_file.txt' | tar -zxv
업데이트 2:
세 번째 문제는 제가 직접 해결했습니다.
ssh root@localhost 'bsdtar -cz -f - -C /my/path/ big_file.txt' | tar -zxv -O > test.txt
답변1
이 명령의 구문에는 다양한 변형이 있습니다 tar
. GNU tar는 기본적으로 표준 입력에서 아카이브를 읽고 표준 출력에 아카이브를 기록하지만, 다른 많은 버전에서는 기본적으로 테이프 장치를 사용합니다. f
플래그(대시 포함 또는 제외 - BSD 버전은 둘 다 지원한다고 생각함)와 -
stdin 또는 stdout을 나타내는 인수를 전달합니다 .
다른 (해제)압축기를 사용하려면 tar
압축을 알리지 말고 명시적으로 (해제)압축기를 파이프하십시오.
파일 이름을 바꾸려면 -s
버전이 지원하는 경우 option을 사용하십시오(GNU tar의 옵션 및 옵션 tar
과 유사함 ).-s
pax
--transform
ssh root@remote 'cd /my/path && bsdtar cf - -s '/big_file\.txt$/hello.txt/' big_file.txt | pbzip2' | pbzip2 -d | tar xf -
단일 파일만 복사하는 경우 메타데이터를 보존하고 사용자 정의 압축 프로그램을 사용하려는 경우가 아니면 tar를 사용할 필요가 없습니다.
scp -C -p root@remote:/my/path/hello.txt big_file.txt