0

i want to tar the contents inside /some/directory/ and this directory has lots of files and other sub directories in it.

what is the actual difference between the below tar commands, i noticed the latter command contains more files in the tar archive compared to the first one.

i compared by using tar -tvf | wc -l on each archive

cd /some/directory/
tar -cvf /tmp/directory.tar *

compared to

tar -cvf /tmp/directory.tar -C /some/directory/ .
  • 1
    If I get it right * is not including files starting with a dot like .bashrc while . is including all files in the directory. – Michael D. Jun 16 at 0:08
1

The first command will tar all files inside /some/directory recursively where the pattern * matches. These are generally all non-hidden files. If you're using bash, you need to enable the dotglob shell option with shopt -s dotglob to also match hidden files before running the command.

The second command changes the directory to /some/directory and includes the current directory . and all files including hidden files inside it. It also adds ./ as parent directory to the archive. You can see this additional folder with tar tf /tmp/directory.tar, but there is no difference to the first command on extraction (besides missing hidden files and that all files in the second archive are prefixed with the relative path ./)

| 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.