`sudo cp -a`는 소유권을 루트로 변경합니다(원래 사용자를 유지하는 대신).

`sudo cp -a`는 소유권을 루트로 변경합니다(원래 사용자를 유지하는 대신).

sudo cp -av다른 디렉토리는 해당 속성을 유지하면서 일부 디렉토리와 루트가 만든 일부 복사본을 백업하려고 합니다 . 이것은 알려진 문제입니까, 아니면 뭔가 빠졌습니까?

소스(ext4)는 이전에 외부에서 사용했던 Ubuntu 시스템 디스크입니다. 디렉터리 구조는 그대로 유지되지만 시작용이 아닌 저장용으로만 사용됩니다. 사용자 이름/그룹 이름 및 uid/gid는 이전 시스템과 동일합니다.

4.1.2 btrfs-progs를 사용하여 NTFS에서 대상(btrfs)을 포맷합니다.

$ sudo cp -av /mnt/src/home/user/thecakeisalie/ /mnt/dest/subvol/

drwx------ 6 user user 4096 Jul 18 09:11 /mnt/src/home/user/thecakeisalie/
drwx------ 3 root root 4096 Jul 18 20:36 /mnt/dest/subvol/thecakeisalie/

  File: ‘/mnt/src/home/user/thecakeisalie/’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 812h/2066d  Inode: 9044504     Links: 6
Access: (0700/drwx------)  Uid: ( 1000/user)   Gid: ( 1000/user)
Access: 2015-07-18 20:21:08.725414953 -0700
Modify: 2015-07-18 09:11:06.873427304 -0700
Change: 2015-07-18 20:08:34.161737231 -0700
 Birth: -

  File: ‘/mnt/dest/subvol/thecakeisalie/’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 805h/2053d  Inode: 660098      Links: 3
Access: (0700/drwx------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-07-18 20:36:23.909377491 -0700
Modify: 2015-07-18 20:36:09.729089386 -0700
Change: 2015-07-18 20:36:09.729089386 -0700
 Birth: -

다른 디렉터리를 테스트하면 /mnt/src/home/user/thecakeisalie/출력과 정확히 일치하는 예상 동작이 생성됩니다.ls -lstat

오늘 오후에 "잘 ​​작동하는" 몇 개의 디렉토리가 생성되었지만 드라이브를 외부에서 사용하기 전에 건드리지 않은 디렉토리를 테스트했는데 그중 일부도 괜찮았습니다.

백업 후 chown문제 없을 정도로 다 편집했는데, 원인이 무엇일지 정말 궁금합니다. Google을 많이 검색했지만 올바른 검색 문구를 사용하지 않거나 이것이 잘 알려져 있습니다.

아래의 mjturner에 일리가 있어서 내부 시스템 디스크(ext4)에 있는 cp -a디렉터리로 명령을 시도했는데 ~/Download결과가 같았으니 btrfs 문제는 아닌 것 같습니다.

지난주에 오래된 노트북을 복원했는데 상황은 비슷했습니다. Ubuntu 13.10으로 업그레이드하려면 다른 새 파티션에 Ubuntu 15.04를 설치해야 했고 부팅한 후 sudo cp -a이전 시스템에서 집 전체를 완료했습니다. 13.10은 2명의 사용자(alpha, bravo)로 설정되었고, 15.04는 1명의 사용자(alpha)로 설정되었습니다. Bravo의 항목에는 마침내 GID/UID(물론)가 표시되는 반면 알파는 이전과 동일하게 보이고 작동합니다. (이전 알파와 새 알파의 GID/UID가 동일한지 확인해야 합니다.)

현재 시스템에 대한 추가 정보 uname:
Linux 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:14:22 UTC 2015 i686

소스 드라이브를 대대적으로 정리한 다음(시스템 디렉터리를 삭제하고 기본 저장소 디렉터리를 루트로 이동) 다시 테스트하겠습니다.

그동안 소스와 대상 간의 차이점을 테스트하는 데 사용할 수 있는 다른 명령이 있습니까? 얼마나 낮은 수준으로 파헤쳐야 하는지는 중요하지 않습니다(어차피 C를 다시 공부하고 싶습니다).

답변1

cp -a300GB 이상의 데이터를 복사 중이어서 다른 터미널에서 대상을 확인한 후 중단했다는 사실을 언급하는 것을 잊어버렸습니다 .

Giles의 의견 덕분에 디렉토리에서만 발생하는지 테스트를 시작했습니다. 아래 테스트에서 볼 수 있듯이 기본적으로 모든 파일은 루트 디렉터리에 기록되고 복사가 완료되면 이전 속성이 파일/디렉터리에 적용됩니다.

TEST_1: 3GB 폴더 및 CTRL-C 동안 sudo cp -a: 현재 파일이 잘리고 디렉터리와 마찬가지로 루트로 남습니다.

home/Download# ls -l
total 20
drwx------ 3 root      root       4096 Jul 19 15:11 ./
drwxr-xr-x 3 user user 12288 Jul 19 15:11 ../
drwx------ 2 root      root       4096 Jul 19 15:11 thecakeisalie/

home/Download# cd thecakeisalie/; ls -l
total 16164
drwx------ 2 root      root         4096 Jul 19 15:11 ./
drwx------ 3 root      root         4096 Jul 19 15:11 ../
-rw------- 1 user user 2109623 May 19  2013 file1
-rw------- 1 user user 2520465 May 19  2013 file2
-rw------- 1 root root 393216  Jul 19 15:11 file3

TEST_2: sudo cp -a완료 허용:

home/Download# ls -l
total 20
drwx------ 3 user user  4096 Jul 19 15:11 ./
drwxr-xr-x 3 user user 12288 Jul 19 15:11 ../
drwx------ 2 user user  4096 Jul 19 15:11 thecakeisalie/

home/Download# cd thecakeisalie/; ls -l
total 16164
drwx------ 3 user user  4096 Jul 19 15:11 ./
drwxr-xr-x 3 user user 12288 Jul 19 15:11 ../
-rw------- 1 user user 2109623 May 19  2013 file1
(...)
-rw------- 1 user user 2520465 May 19  2013 last_file

답변2

제가 보기에는 이상해 보입니다. 당신이 설명하는 내용은 확실히아니요알려진 문제입니다. 나는 cp -a이 프로그램을 광범위하게 사용했으며(전체 Linux 시스템 복제 포함), 문제가 발생한 유일한 경우는 XFS의 버그(이후 수정됨)로 인해 발생한 것이었습니다.

내 생각에는 btrfs이것이 아직 광범위하게 개발 중인 버그인 것 같습니다. 재현이 가능한가요? 동일한 소스 디렉터리를 대상 파일 시스템의 새 위치에 복사하고 권한이 유지되는지 확인할 수 있습니다. 재현이 가능하다면,버그 보고서 제출.

관련 정보