English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux에서 올바르게 빠르게 대량 파일을 삭제하는 방법 공유

서론

本文에서 말하는 '海量'은 크기가 크다는 것이 아니라, 양이 많다는 것을 의미합니다. 예를 들어, 한 디렉토리에 수백만 개의 작은 파일이 있습니다.

최근 서버 최적화를 할 때 postfix의 maildrop 디렉토리와 clientmqueue 디렉토리에 많은 파일이 있음을 발견했습니다. 이 디렉토리에 들어가 ls 명령어를 사용하는 것은 무모한 행동입니다. 직접 rm 명령어를 실행하는 것도 마찬가지입니다. * ، 아무런 반응도 없고, 파일 수도 줄어들지 않았습니다. 따라서, 대량의 파일 디렉토리에서 직접 rm 명령어를 사용하여 파일을 지우는 것은 효과가 없습니다.

그렇다면 올바른 방법은 무엇일까요? 두 가지 선택이 있습니다:

첫 번째 방법:

find /path/to/directory -type f -exec rm {} \;

두 번째 방법:

ls -1 /path/to/directory | xargs -I{} rm {}

위의 두 가지 방법은 대량의 파일을 성공적으로 지우고, 빠르게 지울 수 있습니다. 그러나 더 좋은 방법이 있습니다. 예를 들어, 위에서 언급한 clientmqueue 디렉토리를 지우려면 다음과 같은 방법을 사용할 수 있습니다:

service sendmail stop
cd /var/spool
mv clientmqueue clientmqueue-todelete
mkdir clientmqueue
chown --reference=clientmqueue-todelete clientmqueue
chmod --reference=clientmqueue-todelete clientmqueue
service sendmail start
rm -rf clientmqueue-todelete

위의 방법은 디렉토리를 이름을 변경한 후에 사용했습니다. --reference를 사용하여 디렉토리를 재건하고, 다시 이름을 변경한 디렉토리를 지우는 방법입니다. 디렉토리를 직접 지우는 방법은 매우 빠릅니다. 또한, 백업을 유지하여 지우지 않을 수도 있습니다. 더 안전합니다.

결론

이 글의 모든 내용이 끝납니다. 이 글의 내용이 여러분의 학습이나 업무에 도움이 되길 바랍니다. 궁금한 점이 있으면 댓글로 질문해 주세요. 감사합니다.呐喊 교육에 대한 여러분의 지원에 감사합니다.

추천해드립니다