디렉토리를 외장 하드 드라이브에 복사하려고 합니다. 장치를 설치하고 다음을 입력했습니다.cd root tar -cf - * | (cd /mnt ; tar -xpf -)
다음 오류 메시지가 나타납니다: "비겁한 빈 아카이브 생성 거부"
ls
동일한 루트 디렉터리(전혀 비어 있지 않음)에서 작업을 수행 하면 필요한 모든 파일이 거기에 있습니다.
왜 이런 일이 발생합니까?
답변1
루트 파일 시스템을 복사하고 특수 파일 및 장치에 대해 걱정할 경우 가장 좋은 방법은 다음과 같습니다.
- 먼저 /proc, /dev, /sys 및 기타 마운트된 파일 시스템에 대해 걱정할 필요가 없도록 마운트의 바인드 옵션을 사용하여 /를 하위 디렉토리에 마운트하세요.
- 그런 다음 cp -a 또는 rsync -a와 같은 특수 파일을 처리하는 방법을 아는 명령을 사용하십시오.
/mnt/external 아래에 외장 드라이브를 마운트했다고 가정합니다.
mkdir /mnt/root
mount / /mnt/root -o bind
cp -a /mnt/root/* /mnt/external/
또는
rsync -aP /mnt/root/ /mnt/external/
또는 (tar를 정말 좋아한다면 어떤 btw가 최악의 선택인지)
tar -C /mnt/root -cf - ./ | tar -C /mnt/external -xpf -
자세한 출력을 얻으려면 위 항목에 -v를 추가하세요. 그러나 프로세스 속도가 느려집니다.
답변2
그냥 사용해 보는 게 어때요 cp -pr source destination
?
그래도:
cd ~/tmp/source/;tar -cpf - * | (cd ~/tmp/destination;tar -xpf -)
훌륭하게 작동합니다.
답변3
전체 디렉토리 구조를 복사하는 가장 좋은 방법은 다음과 같습니다.rsync
# rsync -avP /path/to/source/* /path/to/destination/
이는 SSH를 통해 원격 디렉터리와 상호 작용할 수 있다는 장점도 있습니다.
답변4
POSIX를 사용하세요파커스유용.
CP와 달리pax는 모든 시스템에서 동일한 방식으로 작동합니다.. pax를 사용하면 장치 노드와 같은 특수 파일이 포함된 파일 시스템을 항상 안전하게 복사할 수 있습니다.
권한, 타임스탬프 및 특수 파일을 보존하면서 파일 시스템 /mnt/foo를 /mnt/bar로 복사하려면 다음을 수행하십시오.
# cd /mnt/foo
pax -rw -pe -X . /mnt/bar/