
원격 서버의 폴더에 Linux rootfs를 컴파일했습니다. 다운로드해서 로컬 컴퓨터의 SD 카드에 넣고, 임베디드 컴퓨터를 부팅하는 데 사용해야 합니다. 파일을 다운로드할 때 파일의 모든 속성을 어떻게 보존할 수 있나요? 감사해요.
답변1
tar
할 수 있어야 합니다. 소유권 및 권한에 대한 정보를 저장하며 기본적으로 반복적입니다. 나는 결국 SD 카드에 있는 파일의 소유권이 서버에 정의된 사용자나 그룹이나 로컬 컴퓨터에 정의된 사용자나 그룹에 의존해서는 안 된다는 점을 이해합니다. --numeric-owner
좋은 생각이에요 .
--same-owner
추출하는 동안 및 플래그를 사용해야 합니다 --same-permissions
(루트로 수행하는 경우 기본값).
원격 서버에서 파일을 블록 장치로 마운트할 수 있는 권한이 있는 경우( losetup
), 파일 내에 파일 시스템을 생성한 mount
다음 파일을 여기에 배포하여 "모든 속성을 보존"할 수 있습니다( sudo cp -a
). 그런 다음 ( umount
, sync
및 이후 losetup -d
) 해당 파일만 다운로드하고 이를 로컬 SD 카드의 파티션( dd
, cp
또는 cat
기타 항목 포함)에 원시 푸시하거나 로컬로 마운트하고 파일을 검색합니다.
많은 mkfs
도구가 일반 파일에서 작동할 수 있습니다. 또한 현대적인 구현에서는 mount
일반 파일을 반직접적으로 마운트할 수 있습니다(모든 losetup
관련 작업 수행). 아마도 명시적으로 사용할 필요가 전혀 없을 것입니다 losetup
. 다음과 같을 수 있습니다:
# on the server
truncate -s <desired_image_size> image
mkfs.<type> <options> image
sudo mount image <mountpoint>
sudo cp -a <directory>/* <mountpoint>/ # warning: * doesn't match dotfiles
sudo umount <mountpoint>
서버에서 할 수 없는 추가 단계가 필요한 경우에도 전체 파일 시스템 형태로 파일을 다운로드보증파일 시스템에서 지원하는 모든 기능은 전송 중에도 유지됩니다. 귀하의 관심사는 다른 파일 시스템에서/로 복사하는 동안 파일을 보존하는 것이지만 전송 자체로는 변경할 수 없습니다. 어떤 경우에는 이것이 것보다 나을 수도 있습니다 tar
. 특히 "이국적인" 기능이 필요한 경우에는 더욱 그렇습니다(그러나 여기서는 그렇지 않은 것 같습니다). 따라서 이 방법이 가장 일반적입니다.