원격 서버에서 폴더를 다운로드할 때 파일 구조/소유권/권한/...을 유지하는 방법은 무엇입니까?

원격 서버에서 폴더를 다운로드할 때 파일 구조/소유권/권한/...을 유지하는 방법은 무엇입니까?

원격 서버의 폴더에 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. 특히 "이국적인" 기능이 필요한 경우에는 더욱 그렇습니다(그러나 여기서는 그렇지 않은 것 같습니다). 따라서 이 방법이 가장 일반적입니다.

관련 정보