디스크 공간 사용량을 최소화하는 방법


29

내 컴퓨터 중 하나는 매우 제한된 리소스를 갖춘 깔끔한 넷 북인 2GB EeePC Surf 입니다. 그래서 지금은 22MB의 여유 공간이 남아 있습니다.

여기 에서 Openbox DE와 모바일 Linux 로 작동하는 데 필요한 많은 응용 프로그램으로 Arch Linux 를 실행 하고 있습니다.

불필요한 사용 공간을 제거하기 위해 어떤 방법을 사용할 수 있습니까?


@ 스테판은 얼마나 많은 RAM을 가지고 있습니까? (램에 / tmp와 같은 것을 넣을 수 있는지 궁금해합니다)
xenoterracide

1
당신이 ... btrfs를 가정으로 압축 된 파일 시스템을 실험 길을 갈 의향이 지원있는 거 (?하거나 것입니다) 경우도 ... 어쩌면 체크 아웃 @Stefan
xenoterracide

@stefan는 또한 du -sh /공간의 대부분이 사용되는 곳을 확인합니다.
xenoterracide

@xeno, 490MB RAM 및 du -sh /*?
Stefan

@Stefan 당신이 할 수의가 ... 죄송합니다 ... 그래서 cd /하고 실행 du -sh *및 드릴 다운 (당신이 정말로 그것을에 보관 물건에 충분한 RAM이없는) ...
xenoterracide

답변:


19

시작할 수있는 몇 가지 사항은 다음과 같습니다.

  • 시스템에 설치된 패키지를보고 pacman -Q필요없는 패키지를 제거하십시오. -t 스위치 를 추가하는 것이 좋습니다 .

    현재 설치된 패키지에 필요하지 않은 패키지로 출력을 제한하거나 필터링하십시오.

  • 다음과 같이 pacman의 패키지 캐시를 청소하십시오 pacman -Sc

  • 사용 pacman -Rs하지 않는 패키지 종속성도 항상 제거하십시오.

  • 디스크,에 좋은 외에도 많은 부분 사용 "큰 파일"과 폴더를 찾으려면 du입니다 xdiskusage. 이 작은 도구를 사용하면 파일 시스템을 빠르게 탐색하고 폴더의 디스크 사용량을 그래픽으로 볼 수 있습니다.


pacman -cc설치된 패키지를 포함하여 전체 캐시를 정리합니다. 나중에 백업으로 사용할 수 있으므로 일반적으로 권장되지 않습니다.
xenoterracide

@xeno, 나는 이미 데스크탑에 대한 디렉토리를 마운트 --cachedir하므로 pkg 파일을 유지할 필요가 없습니다.
Stefan

3
공간을 지우기 위해 /, 나는 발견 pacgraph정말 유용합니다. 설치된 패키지를 크기별로 정렬 할 수 있으므로 제거하기에 적합한 우선 순위를 지정할 수 있습니다. SVG 의존성 그래프를 그릴 수도 있지만 명령 행에서만 유용합니다.
Anko

4
ncdu에 대한 멋진 명령 줄 대안 xdiskusage입니다. 그러나 Baobab 은이 목적에 가장 적합한 그래픽 앱입니다.
Zaz

10

경고 :이 아이디어는 전체 Linux 및 Arch Linux에 정통한 사용자를위한 것입니다.

위험한 지역을 기꺼이 밟으려면 기본 아치 설치를 500MB 미만으로 줄이십시오. 이를 위해서는 매우 위험한 일이 필요합니다.

  1. 불필요한 로케일 제거 (이미 적용됨)
  2. 시스템을 실행하는 데 필요한되지 않은 펌웨어 파일을 제거 (에서 /usr/lib/firmware)
  3. 시스템을 실행하는 데 필요한되지 않은 커널 모듈을 분리 (에서 /usr/lib/modules/...)
  4. 어떤 제거 .a파일을 /usr/lib(. 당신이 컴파일 소프트웨어 시스템을 사용하지 않을 경우에만 참고 :이 사용 포함 makepkg)
  5. 모든 것을 제거 /usr/include(당신이 컴파일 소프트웨어 시스템을 사용하지 않을 경우에만)
  6. 에서 불필요한 문서를 제거 /usr/share/doc하고/usr/share/info
  7. (아마도 서버가 아닌 한 아주 나쁜 아이디어) /usr/share/man
  8. (또한 나쁜 생각) 불필요한 터미널 디스크립터 /usr/share/terminfo와 불필요한 시간대 파일을 제거하십시오./usr/share/zoneinfo
  9. strip *실행 바이너리 ( /usr/bin/usr/sbin)를 포함하는 모든 폴더에서 실행되는 (위험 )
  10. (극한 상황에서) upx더 큰 바이너리를 압축 하는 등의 도구 를 사용 upx하는 경우 실행 중 RAM이므로 RAM이 적은 시스템에서는 지치십시오.

이 작업을 수행하기 전에 시스템을 완전히 백업하십시오. 리눅스는 고맙게도이 작업을 비교적 쉽게 해줍니다. 외부 볼륨 (예 : USB 드라이브)을 연결하고 마운트 할 수 있으면 cd / && tar -cf /mnt/usb/mySystem.tar /전체 시스템을 백업하는 것과 같은 작업을 수행 할 수 있습니다 .

다시 한 번, Linux 내부 및 Arch Linux에 대한 심층적 인 지식, 경험 및 이해 가 없으면 실제로 위의 작업 (특히 7-9)을 수행하지 않는 것이 좋습니다 . 내가 나열한 파일을 거의 재생하면 시스템이 끔찍한 방식으로 손상 될 수 있으므로 경고를 받았습니다. 시스템에 특정 펌웨어 파일, 모듈 등이 필요한지 모른다면 엉망이되기 전에 조사하십시오. (시스템에 필요한 커널 모듈을 제거하면 부팅 할 수없는 시스템 또는 키보드 / 네트워크 카드 / 사운드 / 디스플레이 등을 지원하지 않는 시스템 또는 모든 종류의 설명 할 수없는 동작이 발생할 수 있습니다.)

또한 모든 패키지 업그레이드는 위에서 제거한 많은 파일을 복원 할 수 있으며 복원합니다. 이 경로를 사용하기로 결정한 경우 불필요한 파일 제거를 스크립트로 작성하고 모든 주요 패키지 업그레이드 후에 스크립트를 실행하는 것이 좋습니다. (예 : 커널을 업그레이드하면 모든 커널 모듈을 다시 가져오고 linux-firmware 패키지를 통해 펌웨어를 모두 가져 오는 종속성을 통해 업그레이드 /usr/lib/firmware합니다.)

마지막으로, /var/log시간이 지남에 따라 저널 파일이 커질 것입니다. 과거 저널을 제거 할 수 있지만 rm *\@*.journal저널 폴더 와 같은 작업을 수행하여 현재 저널을 유지할 수 있습니다 .

이 기술을 사용하여 몇 달 동안 512MB Disk-on-Module 장치에서 NAS 서버를 성공적으로 실행했지만 여전히 희미한 것은 아닙니다. (또한 LinuxFromScratch를 사용하여 128MB의 스토리지에서만 유사한 프로젝트를 빌드했지만 다른 이야기입니다 ...)


편집 / 추가 :

추가 공간을 확보하기 위해 사용할 수있는 몇 가지 방법이 더 있습니다.

  • 제거하기 libgo. libgo라이브러리와 함께 제공 gcc-libs하고 AFAIK 만 이동 언어로 작성된 응용 프로그램에서 사용됩니다. 해당 라이브러리가 필요한 응용 프로그램을 생각할 수 없습니다. 내 시스템의 크기는 40MB입니다. 날씬하게하려고 할 때, 그것은 많은 공간입니다. 나는 내가하는 일에 아무런 영향을 미치지 않고 "미니"설치에서 제거했습니다 (다시, YMMV입니다!).

  • 축소 libicudata.so. 내 시스템의 크기는 27MB입니다. 기본적으로 라이브러리 객체로 압축 된 수많은 유니 코드 / 로캘 데이터입니다. 이 파일의 더 작은 버전을 만들 수있는 온라인 도구가 있지만 현재 버전에 대해 업데이트되지 않았습니다 (그리고 최신 버전에서는 이전 파일을 사용할 수 없습니다).이 작업은 직접 시도하지 않았지만 방법을 알아낼 수 있다면이 파일을 약 20-22MB 정도 줄일 수 있습니다.

  • Python을 사용하는 경우 testpython2 : 에서 라이브러리를 제거하여 rm -r /usr/lib/python2.7/test37MB 정도를 절약하고 python3 : 에서 라이브러리를 제거하면 약 66MB를 절약 할 수 있습니다 rm -r /usr/lib/python3.6/test.

  • 파이썬에서 다시 한 번 .pyo파일과 파일을 제거 할 수 .py있습니다. .pyo파일은 파일을 "최적화"되어 있지만, 파이썬은 결코 진짜로을 사용하지 않습니다. .py파일은 표준 라이브러리의 원시 소스 코드입니다. 파이썬이 파이썬 코드를 실행할 때 일반적으로 읽는 유일한 파일은 .pyc(파이썬 컴파일 된) 파일입니다. cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;cd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • 불필요한 로캘 데이터를 제거합니다. localepurge이것을 자동화 하는 AUR 패키지가 있습니다 . 그렇지 않으면에서 게임을해야합니다 /usr/share/locale. 자신의 로캘을 유지해야합니다 locale.alias. 유지, 여기 미국에서 나를 위해 en_US그리고 locale.alias하고 다른 약 80MB 정도 깎아 모든 것을 제거.

이제보고 싶은 것은 시스템을 분석하고 필요한 커널 모듈과 필요한 펌웨어 파일을 결정하는 도구입니다. 해당 폴더를 "안전하게"정리할 수있는 좋은 방법입니다.

또는, 어쩌면 누군가는 아치 "배포판"고 용도를 함께 넣어해야 uClibc하거나 diet-libc또는 유사한 무언가를. 재미있는 여름 프로젝트 일 수 있습니다. :-)


2
저도 이것에 관심이 있습니다 .. 펌웨어는 저에게 가장 큰 이득 인 것 같습니다. 작은 vagrant box를 만들려고하므로 virtualbox에서 아치를 실행하는 데 필요한 펌웨어 만 있으면됩니다. 쉽게 찾을 수있는 방법이 있습니까? 어떤 펌웨어가 필요한가요?
Tom B

경고 : 방금 시도했는데 upx모든 유형의 실행 파일과 잘 어울리지 않습니다. 예 : mysqld & mongodb segfaulting
Ayush

3
re : 패키지 업그레이드는 제거하는 많은 파일을 복원 할 수 있으며 복원합니다 . NoExtract정의 와 함께 /etc/pacman.conf를 확장하면 (여러 번 정의 할 수 있음) 해당 문제를 영구적으로 해결할 수 있습니다. 업데이트 Realtek nic 드라이버 만 업데이트하는 한 가지 예 :NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup

find /usr/lib/firmware -atime +3030 일 내에 액세스하지 않는 펌웨어 파일을 찾습니다. 해당 파일을 삭제하는 것이 안전해야합니다.
user202729

5

TLDR

journalctl --vacuum-size=100M #remove all logs, only retain 100mb
pacman -Scc #remove all package installation files (obsolete and current)
pacman -S bleachbit
bleachbit -c system.*

첫째, 시스템의 큰 부분

du -d1 -h / 2>/dev/null | sort -h

다음은 / 두 수준 아래로 수행 할 수 있는 가장 큰 디렉토리의 정렬 된 목록입니다 .

du -d2 -h / 2>/dev/null | sort -h

내 결과는 다음과 같습니다

0       /proc
0       /sys
0       /tmp
12K     /dev
12K     /srv
16K     /lost+found
632K    /run
4.3M    /boot
13M     /opt
15M     /etc
75M     /root
93M     /home
2.4G    /var
3.2G    /usr
221G    /mnt
227G    /

나는 무시 /mnt두 DIRS 마음에 서 (즉, 외부 드라이브이기 때문에) : varusr. 안에 무엇이 있는지 봅시다 :

du -d1 -h /var /usr 2>/dev/null | sort -h

그런 다음 조금 더 깊게 살펴보십시오.

du -d1 -h /var/log /usr/share /usr/lib /var/cache 2>/dev/null | sort -h

로그부터 시작하겠습니다

에 717mb가 /var/log있습니다.

나는 디렉토리를 무작위로 삭제하는 팬이 아니므로 깨끗한 방법으로하자.

$ journalctl --disk-usage
Archived and active journals take up 728.7M on disk.

100MB의 로그 만 남겨 두십시오.

journalctl --vacuum-size=100M
...
Deleted archived journal /var/log/journal/ba5391...b.journal (8.0M).
...
Vacuuming done, freed 616.6M of archived journals on disk.

journalctl을 구성하는 방법에 대한 자세한 내용은 여기를 참조 하십시오 .

패키지

나는있다 660M /var/cache/pacman. 1.8GB 였지만 pacman -Sc사용하지 않는 패키지를 제거하기 위해 실행 되었습니다. 나머지를 제거합시다 :

pacman -Scc

/ usr / share / locale

많은 사용자가 제거하거나 최소한 정리합니다. 그러나 나는 문제 일지도 모른다 . 그러나 체크 표백제 (다음 단락).

표백제

자동 청소기 . 많은 것을 삭제하지만 대부분은 로케일이었습니다.

$ pacman -S bleachbit
$ bleachbit -p system.*
Disk space to be recovered: 488.8MB
$ bleachbit -c system.*

삭제할 항목을 더 찾을 수 있습니다.

bleachbit --list
bleachbit -p thunderbird.*

아주 작은 Arch Linux 64 비트 설치에서 블리치 비트 패키지의 총 설치 크기는 209.70 MiB입니다.Total Installed Size: 209.70 MiB
Pro Backup

1
팁 : 당신이 경우에 du -xkd1에서 /디렉토리, 다른 마운트 지점에 내려하지 않습니다.
fdmillion

3

Ubuntu를 사용하는 Eeepc의 4GB 디스크에서 / usr / share / locale에서 일부 로케일 파일과 / usr / share / gnome / help /에서 그놈 도움말 파일을 제거하는 데 도움이되었습니다. 둘 다 내가 사용하지 않는 언어로 설치되었습니다. 그래도 Arch Linux가 모든 파일을 설치하는지 확실하지 않습니다.


예 ... du -hs /usr/share/locale약 300MB입니다 ... rm -rf불필요한 파일 만 사용할 수 있습니까?
Stefan

2
@Stefan wiki.archlinux.org/index.php/Locale는 당신이 편집하는 경우 /etc/locale.gen및 다시 실행 locale-gen, 당신은 더 적은 미리 컴파일 된 로케일이 있어야합니다. 자동화 된 방식으로 더 많은 공간을 확보하려면 aur.archlinux.org/packages.php?ID=11975 도 시도해보십시오 . (하지만 지원되지 않으며 시스템이 중단되면 조각을 보관해야합니다.)
ephemient

1
localepurge 는 불필요한 지역화에 낭비되는 디스크 공간을 제거하는 스크립트입니다. /etc/locale.nopurge를 먼저 편집하십시오 :) 처음 실행했을 때 ~ 300MB를 청소하고 두 달마다 수십 MB를 정리했습니다. AUR로 제공됩니다.
tuk0z

0

AUTOMATING은 매우 오래된 파일을보고 필요한지 확인하고 제거하는 것이 좋습니다. 이것은 두 가지로 할 수 있습니다. find아주 오래된 파일을 찾기위한 명령을 작성하는 사람 . 이 출력 (파이프)을 lograte사용하여 3 개월이 지난 파일을 보관하고 3 개월이 지난 파일을 보관하고 삭제하기 전에 하루 전까지 메일을 보내도록 스크립트에 스크립트를 사용합니다. 중요한 파일을 잃어 버리지 않았 음을 확신 할 수 있습니다. 따라서 마지막으로 위의 작업을 수행하려면 다음 명령이 필요합니다.

find , | , logrotate , mail, crontab

나는 당신에게 숟가락을 먹이지 않을 것입니다. 이전 에이 작업을 성공적으로 수행했으며 나중에 nagios회사 서버에서 이러한 종류의 작업을 수행하도록 조정되어 모니터링 을 계속하기로 결정했기 때문에 나중에 폐기되었습니다 . 나는 경우 생각 mail명령이 이미 구성되어 있지 않은, 당신은 힘든 나머지는 정직해야하다는 사실을 발견했습니다. 이 모든 것은 bash 스크립팅을 통해 수행하고 cron 작업에 배치하고 x 일마다 실행해야합니다. bash 스크립팅을 배우십시오.이 기능은 * nix로 더 편리하게 사용할 수 있습니다. 좋아하는 인터넷 검색 엔진을 사용하여 위의 명령과 bash 스크립팅에 대해 읽으십시오. 함께 묶어 테스트하십시오. 일단 만족하면 정기적으로 사용하십시오. 나는 이것이 재미있을 것이라고 확신합니다. 전에 이런 일을하지 않았다면 많은 것을 배울 것입니다.

  • 희망이 도움이

1
내 경험상 나는 물건을 차지하는 대부분의 디스크가 OS 관련 파일이 아니라 내 자신의 파일이 일정 기간 동안 축적되었다는 것을 알았으므로 위의 내용을 제안했습니다.
bagavadhar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.