find를 통해 모든 파일과 하위 디렉터리를 이동하려면 move 명령을 사용하세요.

find를 통해 모든 파일과 하위 디렉터리를 이동하려면 move 명령을 사용하세요.

많은 하위 폴더가 포함된 폴더가 있는데 /home/storage/aggregate_data, 여기에는 많은 파일과 하위 폴더가 포함되어 있습니다.

/home/storage/aggregate_data매개변수 목록이 상당히 길 수 있으므로 명령을 사용하여 90일이 지난 폴더의 모든 파일을 새 파일로 복사하고 싶습니다 ./home/storage_new/aggregate_datafind

나는 명령을 사용하고 있습니다

find /home/storage/aggregate_data/* -mtime +90 \
  -exec mv -v '{}' /home/storage_new/aggregate_data/ \;

문제는 이동 후에도 일부 파일의 디렉터리 구조가 유지되는 반면 다른 파일은 유지되지 않는다는 것입니다.

예: 원래 경로에 있던 파일이 예상과 다른 위치 /home/storage/aggregate_data/rrc/rrc_daily/imsi_rrc/imsi_rrc_daily_2022_01_02.parquet로 이동되었습니다 ./home/storage_new/aggregate_data/imsi_rrc_daily_2022_01_02.parquet/home/storage_new/aggregate_data/rrc/rrc_daily/imsi_rrc/imsi_rrc_daily_2022_01_02.parquet

나도 시도했다

find /home/storage/aggregate_data/ -mtime +90 \
  -exec mv -v '{}' /home/storage_new/ \;

일부 파일과 폴더에만 이 문제가 발생하고 전체에는 발생하지 않는 이유는 무엇입니까?

내 목표를 어떻게 달성할 수 있나요?

답변1

디렉터리를 이동하면 해당 디렉터리 아래에 포함된 모든 파일과 디렉터리가 디렉터리 이동의 부작용으로 이동됩니다.

파일을 이동하면 파일만 대상 디렉터리로 이동하고 디렉터리 계층 구조는 생성되지 않으며 위 디렉터리 시나리오처럼 파일이 대상 폴더로 이동되지만 위 디렉터리처럼 부작용은 없습니다.

자신만의 스크립트를 작성할 수 있습니다. 이동을 올바르게 수행하기 위해 아직 존재하지 않는 경우 대상 계층 구조를 만듭니다. 그런 다음 mv일반적인 것 대신 find의 -exec에서 이것을 사용하십시오.

rsync이 작업을 자동으로 수행하는 논리를 갖춘 진정한 백업 도구입니다.

관련 정보