동일한 이름을 가진 한 디렉터리에서 다른 디렉터리로 재귀 파일을 이동하는 방법 이전 파일의 이름을 바꾸고 수정 시간을 추가합니다.

동일한 이름을 가진 한 디렉터리에서 다른 디렉터리로 재귀 파일을 이동하는 방법 이전 파일의 이름을 바꾸고 수정 시간을 추가합니다.

모든 파일이 다른 경우 동일한 경로/이름 파일을 사용하여 한 드라이브에서 다른 드라이브로 재귀적으로 이동한 다음 파일 이름에 수정 시간을 추가하여 이전 파일의 이름을 바꿔야 합니다. 동일한 경로/이름을 가진 파일을 덮어씁니다. 파일 크기는 5K에서 500M까지입니다.

다음은 제가 만든 테스트 환경의 트리와 몇 가지 설명입니다.

/bmrlbackup/drive1/
`-- user001
    `-- directory1
        `-- project001
            |-- file000           #identical
            |-- file001           #older same name
            |-- file0011          #unique
            |-- phase1
            |   |-- file000       #identical
            |   |-- file110       #unique
            |   |-- file999       #newer same name
            |   `-- phase11
            |       `-- file111   #unique
            `-- phase2
                `-- file120       #unique
/bmrlbackup/drive2/
`-- user002
    `-- directory2
        `-- project001
            |-- file000           #identical
            |-- file001           #newer same name
            |-- file0012          #unique
            |-- phase1
            |   |-- file000       #identical
            |   |-- file210       #unique
            |   `-- file999       #older same name
            `-- phase2
                |-- file220       #unique
                `-- phase21
                    `-- file221   #unique

rsync 이동 고유 파일 출력:

#rsync -a --ignore-existing --remove-source-files $sd1/ $dd1/
project001/
project001/file0011
project001/phase1/
project001/phase1/file110
project001/phase1/phase11/
project001/phase1/phase11/file111
project001/phase2/
project001/phase2/file120

이동할 남은 파일:

#remm="ls -1 $(find $sd1/ -type f)"
/bmrlbackup/drive1/user001/directory1/project001/file000
/bmrlbackup/drive1/user001/directory1/project001/file001
/bmrlbackup/drive1/user001/directory1/project001/phase1/file000
/bmrlbackup/drive1/user001/directory1/project001/phase1/file999

여기에서는 두 위치 모두 동일한 파일을 갖고 있으므로 이동하고 덮어써야 합니다.

/bmrlbackup/drive1/user001/directory1/project001/file000 
/bmrlbackup/drive1/user001/directory1/project001/phase1/file000

이름은 같지만 내용이 다른 파일은 다음과 같습니다.

/bmrlbackup/drive1/user001/directory1/project001/file001
/bmrlbackup/drive1/user001/directory1/project001/phase1/file999

"이름은 같지만 내용이 다른" 파일을 비교해야 하며, 이전 파일의 이름을 바꾸고 수정 날짜와 시간을 추가해야 합니다. 따라서 소스가 최신인 경우 대상 파일의 이름을 추가하고 소스를 이동합니다. 소스가 더 오래되면 소스 이름을 추가하고 이름 추가 소스를 이동합니다.

이 프로세스의 결과로 결국 모든 파일이 드라이브 1에서 드라이브 2로 이동됩니다.

제발, 제발, 도와주세요!

답변1

"diff"를 사용하여 파일을 한 줄씩 비교할 수 있습니다. 이 게시물도 확인해 보세요.시간 찾기. 그런 다음 mv 명령을 사용하여 이전 파일을 이동할 수 있습니다

답변2

--update 및 --backup과 함께 rsync를 양방향으로 사용합니다.

-u, --update                skip files that are newer on the receiver
-b, --backup                make backups (see --suffix & --backup-dir)

관련 정보