0

I am trying to tar everything within my home folder into a tar and I want to exclude certain folders like hidden ones and test_tree (which is actually nested quite a bit inside of other folders).

I tried executing this command:

tar -vcf everything.tar . --exclude='.*' --exclude='test_tree'

inside of the home directory cd ~ but the tar created was completely empty. What is going on?

1

I have the same issues, --exclude='.*' works fine on MacOS but not on Linux. You can do,

tar -vcf everything.tar . --exclude='./.*' --exclude='test_tree'

Or

tar -vcf everything.tar . --exclude='.[^/]*' --exclude='test_tree'

| improve this answer | |
0

It is the use of . as your source coupled with telling tar to exclude things starting with . that is the problem. Try using the absolute path for example /home/user or "$PWD" if you are in the directory already and it should work fine.

| improve this answer | |
0

Best solution is to cobble up a file with the offending names, and go:

tar cf my-precious.tar -X file-of-offenders .

(Dunno if -X is a GNUism, though... but you seem to be using GNU tar anyway).

| improve this answer | |
0

To match "hidden files" using a shell-style pattern, use .[^.]*.

Using .* matches the special directory entry . (and also ..). This is usually not what you want.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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