USB HDD가 있습니다.
압축이 활성화 된 상태로 마운트하고 싶습니다. 내 시스템의 fstab에서 또는 심지어 udev 규칙을 사용하여 할 수 있습니다. 문제는 내 컴퓨터에만 USB HDD를 마운트하지 않는다는 것입니다. 지금까지는 마운트 할 때마다 터미널을 트리거했습니다.
그런 다음 . 이것은 매우 잘 작동합니다. 그러나 ZLIB 대신 LZO를 사용하고 싶습니다. 방법이 있습니까? 더 구체적이고 압축 알고리즘을 모두 한 번 정의 하시겠습니까?
Answer
btrfs는 마운트 된 이후 변경된 모든 파일을 압축합니다. 다음을 사용하는 경우 :
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
모든 파일이 이런 방식으로 압축되는 것을보고 싶다면 제가 작성한 스크립트가 있습니다. …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
위의 내용은 $HOME
디렉터리에서만 작동합니다. 원하는대로 무엇이든 사용할 수 있습니다. 또한 -n
피연산자가 sh
에 그대로 공급됩니다. 현재 sh
이 무엇인지 직접 확인할 수 있습니다. not
제거하기 전에 작업을 수행하십시오.
어쨌든 먼저 iv id =를 쿼리합니다. human-readable
형식의 파일의 경우 “d583611ea3″>
(다음 단계에서 제거하므로 여기서 중복 될 수 있음) 어쨌든) 1MB
또는 $((1024*1024)).
|pipes
정보를 제거하는 sed
파일 이름 앞의 /, "quotes"
앞에있는 모든 항목을 제거하고 btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
명령을 빌드하고 |pipe
를 sudo sh
에 넘겨 실행합니다.
다시 말하지만, sh --no-execute
이 적용되는 동안에는 아무것도하지 않습니다.
매우 최근의 btrfs
사용자 공간 도구 빌드는 전체 디렉토리 조각 모음을 재귀 적으로 수행하지만, 그렇다면 “아주 새로운 것이므로 항상 이런 일을해야했습니다.
댓글
답변
내가 읽은 내용에서 하위 볼륨의 루트에있는 compression
속성을 다음과 같이 설정할 수 있습니다. 이 [0, 1] 달성 :
sudo btrfs property set /mnt/your-subvolume compression lzo
sudo btrfs filesystem show /mnt/your-subvolume
로 Btrfs 하위 볼륨 UUID를 가져온 후 다음을 수행 할 수 있습니다. LZO 압축 기능이 현재 활성화되어 있는지 확인합니다.
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
활성화 된 경우 1을 반환해야합니다.
[0] https://btrfs.wiki.kernel.org/index.php/Compression
[1] https://www.berthon.eu/2016/setting-shared-folder-compression-on-synology-nas-btrfs/
compress=lzo
이면 충분합니다. ' PNG와 같은 압축 바이너리 파일을 다시 압축 할 필요가 없습니다.