디렉토리를 외장 하드 드라이브에 복사

디렉토리를 외장 하드 드라이브에 복사

디렉토리를 외장 하드 드라이브에 복사하려고 합니다. 장치를 설치하고 다음을 입력했습니다.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/

관련 정보