[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