[OE-core] Efficient ways to delete a build directory
Robert Yang
liezhi.yang at windriver.com
Thu Jan 3 03:25:31 UTC 2019
On 1/3/19 10:44 AM, Robert Yang wrote:
>
> We have the following 3 ways to delete a build directory:
> * rm -fr build
> * find -delete build
> * rsync -a --delete emtpy_dir build
>
> I've heard that rsync is the fastest way for removing millions of files,
> so I did a test on removing the build dir:
>
> * Host info:
> $ cat /etc/issue
> Ubuntu 14.04.4 LTS \n \l
>
> $ rm --version
> rm (GNU coreutils) 8.21
>
> $ find --version
> find (GNU findutils) 4.4.2
>
> $ rsync --version
> rsync version 3.1.0 protocol version 31
BTW, the filesystem is ext4.
// Robert
>
> * Do a build
> $ . oe-init-build-env build
> $ bitbake core-image-minimal
>
> * Size:
> $ du -sh build
> 22G
>
> * Files amount:
> $ find build -type f | pv -l >/dev/null
> 2.61M
>
> 2.61 millions files
>
> * Make 3 copies:
> $ cp -r build build_copy_1
> $ cp -r build build_copy_2
> $ cp -r build build_copy_3
>
> * Remove them:
> $ time rm -fr build_copy_1/
> real 3m26.249s
> user 0m4.612s
> sys 1m1.704s
>
> $ time find build_copy_2/ -delete
> real 3m6.771s
> user 0m4.236s
> sys 0m59.592s
>
> $ time rsync -a --delete empty/ build_copy_3/
> real 5m7.115s
> user 0m8.612s
> sys 1m13.928s
>
> We can see that find -delete is the fastest way, rsync is the slowest one,
> and rm is close to find. Maybe it is because find and rsync are improved in
> nowadays, so they are faster than rsync.
>
More information about the Openembedded-core
mailing list