Re: find subvolume directories

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18/07/2019 19.48, Andrei Borzenkov wrote:
> 18.07.2019 15:00, Axel Burri пишет:
>> On 13/07/2019 01.17, Ulli Horlacher wrote:
>>> I need to find (all) subvolume directories.
>>> I know, btrfs subvolumes root directories have inode #256, but a
>>> "find / -inum 256" is horrible slow!
>>
>> Having all required frameworks for this in btrbk, implementing a "list
>> all subvolumes below <path>" command was quite easy to implement:
>>
>> https://github.com/digint/btrbk/commit/e12d980502
>>
>>  - get mounted filesystems from /proc/self/mountinfo
>>  - fetch subvolumes using "btrfs subvolume list" (fast, needs root)
>>  - filter and print subvolumes below mount point
>>
>> Note that this approach needs root, as "btrfs subvolume list" requires
>> "cap_sys_admin" and "cap_dac_read_search".
>>
>>
>> Try it:
>>
>> Download btrbk from "action-ls" feature branch (no dependencies needed):
>>
>> # cd /tmp
>> # wget https://raw.githubusercontent.com/digint/btrbk/action-ls/btrbk
>> # chmod +x /tmp/btrbk
>>
>>
>> List subvolumes below /home:
>>
>> # ./btrbk ls /home
>> # ./btrbk ls /home -t
>>
>>
>> Comprehensive list of all accessible subvolumes:
>>
>> # ./btrbk ls / --format=long
>>
> 
> Seems to work, also across non-btrfs mount point. One thing missing is
> actual subvolume path (not current mount point).

Displaying the subvolume path might be useful as well, but I think this
should better be hidden from the user, except he is investigating btrfs
internas.
Note that the subvolume path (from "btrfs subvolume list") is ambiguous:
You can not tell what parts are "path-to-subvolume", and which are
"subvolume-name" (especially for nested subvolumes within directories).


Nevertheless, I updated "btrbk/action-ls" to print subvolume_path as
well as subvolume_rel_path (relative to top_level subvolume) for
format=rel [1]:

# ./btrbk ls / --format=rel

 [1] https://github.com/digint/btrbk/commit/c0f2896ae1

> 
>>
>> Show commands run by btrbk:
>>
>> # ./btrbk ls / -l debug
>>
>>
>> If you need to run this as a regular user (and if you are brave), you
>> can install setcap enabled btrfs binaries from:
>> https://github.com/digint/btrfs-progs-btrbk
>>
>> Hope this helps,
>>
>> - Axel
>>
> 



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux