Tar files located in another directory
August 2, 2016
Today I wanted to send some PDF files on blogging to a friend. I have those files in a "Blogging" directory which I can access using WebDAV with SSL on my iPad. I use this set up to sync PDF books to the GoodReader iOS app, which I can't recommend enough if you want to read PDFs on an iPad.
I wanted to add the files into a single compressed tar file for easy
uploading / downloading but I didn't want to create this tar file
inside this directory to prevent cluttering it. Moreover, the
"Blogging" directory is owned by user
www-data and I wanted to avoid
chown. In short, my requirement was to create the
tar file in a different location. And without the path information.
So, at first I tried the
-C option of
tar to change to the
directory containing the desired PDF files:
tar zcvf blogging.tgz -C ~/Downloads/GoodReader/Computer/Blogging .
However, this command has the disadvantage that the resulting tar file
has a directory named
. (dot) which contains the desired PDF files.
After some Googling I did find a solution: use the
tar to transform the file names using
So I used the
sed substitute command
s to delete all characters of
the file name of each PDF file up until and including the final
forward slash. Because the pattern on the left hand side has a slash
? as a delimiter to avoid a 'picket fence'.
tar zcvf blogging.tgz ~/Downloads/GoodReader/Computer/Blogging/*.pdf \ --transform 's?.*/??'
And this command did exactly what I wanted. Note that this solution
allows for filename expansion (globbing), unlike the previous one. For
example, above I used