명령줄을 통해 전체 원격 디렉터리 트리와 파일 구조를 빈 파일로 복제하는 방법은 무엇입니까?

명령줄을 통해 전체 원격 디렉터리 트리와 파일 구조를 빈 파일로 복제하는 방법은 무엇입니까?

원격 프로덕션 서버에는 15TB가 넘는 데이터가 포함된 디렉터리가 있습니다. 또한 Linux 권한 외에도 ACL은 부서, 사용자 및 데몬이 액세스를 미세 조정할 수 있도록 광범위하게 사용됩니다.

CI/CD 파이프라인 및 자동화된 테스트를 위해서는 이러한 권한 변경이 시스템에 어떤 영향을 미치는지 테스트해야 하지만 그 전에 테스트 환경에서 프로덕션 콘텐츠를 복제해야 합니다.

분명히 15TB의 데이터를 복제할 수 없으며 데이터에는 별로 관심이 없고 메타데이터(파일 이름, 권한, 타임스탬프 - 기본적으로 ls -lah반환되는 모든 정보)에만 관심이 있습니다.

내가 사용하는 방법에 따라 내가 무엇을 하려는지 쉽게 알 수 있습니다 rsync.

rsync -aAr --include='*/' --exclude='*' [email protected]:/my/directory/ /test/directory/

카탈로그 관점에서 볼 때 이것이 바로 나에게 필요한 것입니다. rsync내용은 없지만 파일 이름과 속성은 그대로 유지한 파일 복사를 허용하는 옵션이 있으면 문제 가 해결될 것입니다. (할 수 있다?)

이제 디렉터리에서 위의 rsync 명령을 실행한 후 수행할 작업은 다음과 같습니다.

ssh [email protected] 'find /my/directory -type f -exec ls -lah {} \;' > my.production.directory.files.txt

그러면 콘텐츠에 다음과 같은 데이터 줄이 포함된 로컬 파일이 제공됩니다.

-rwxrwxrwx  1 owner  group    15K Oct 13 10:07 /my/directory/jobs.txt

여기에는 9개의 필드가 있으며 이를 awk 및 bash에 전달합니다.

cat my.production.directory.files.txt | awk '{print "touch " $9 " && chown "$3":"$4" "$9}' | bash

더 나은 방법이 있어야 한다고 생각합니다. 적용할 다른 명령과 원래 타임스탬프를 통해 파일을 필터링하기 chmod전에 이 작업을 수행하는 더 효율적인 방법이 있습니까 ? like 는 like 와 cp함께 있고 --reference와도 관련이 있습니다. 단, 원격 파일 시스템은 제외됩니다.--attributes-onlytouchchown

응답은 명령줄에서 직접 실행되어야 합니다. 어떤 스크립트도 업로드하거나 의존할 수 없습니다. 또한 getfacl -R 및 setfacl이 권한을 복원하지만 타임스탬프 및 비권한 관련 파일 데이터(내가 알고 있는)는 복원하지 않는다는 것을 알고 있습니다.

답변1

여기 미친 아이디어가 있습니다.sshfs?

  1. 다음 명령을 사용하여 원격 디렉터리를 로컬로 마운트합니다 sshfs.

    sshfs remoteuser@remotehost:/my/directory /mountpoint
    
  2. --attributes-only옵션을 사용하여 cp파일 구조를 다시 만듭니다.

    cp -a --attributes-only /mountpoint /test/directory
    
  3. sshfs 파일 시스템을 마운트 해제합니다.

    fusermount -u /mountpoint
    

이를 위해서는 원격 호스트에 추가 소프트웨어를 설치할 필요가 없습니다.

관련 정보