Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I want to archive files (with tar) which are below 3 MB in size. But I also want to retain the directories in which those files exist. (so I cannot use find command). I just want to avoid the files which are above 3 MB in size. How can this be done?

share|improve this question
    
So why can't you use find again? –  Ignacio Vazquez-Abrams Feb 8 '11 at 6:28
    
Can the find command keep the directories intact? –  nixnotwin Feb 8 '11 at 6:48

1 Answer 1

up vote 5 down vote accepted

Simpler than you think:

$ tar cf small-archive.tar /big/tree --exclude-from <(find /big/tree -size +3M)

On a semi-related note (relating to your statement that you can't use find) to get a listing of all files (including directories) under a path minus files larger than 3MiB, use:

$ find . -size -3M -o -type d

You could then do:

$ tar cf small-archive.tar --no-recursion --files-from <(find /big/tree -size -3M -o -type d)

But I'd prefer the first one as it's simpler, clearly expresses what you want and will lead to less surprises.

share|improve this answer
    
+1 What! A polite, friendly person on SF?!? –  Jongosi Oct 8 at 21:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.