Read on to find out which is the right choice for you.
When you need to back up a file system or perhaps do some ad hoc directory backups, you've got two tar utilities you can use: AIX tar or GNUtar. In the past, admins have usually gone for GNUtar when archiving big files because in early releases of AIX the file size limit was 2GB. However, since late AIX 5.3, you can archive files up to 8GB.
One notable difference to be aware of is that by default GNUtar ignores the leading slash (/); that means the archive is relative, though this can be changed as we shall see shortly. With AIX tar, the default is absolute. When doing a file system backup, there could be a requirement to archive only certain files/directories; maybe you're not interested in other directories contained in the file system. With both versions of tar, you can exclude certain files/directories. Before we look at exclusion, though, let's look at the difference between absolute and relative archives.
Relative and Absolute: What's the Difference?
When doing a GNUtar archive, you may specify a relative or absolute backup. What's the difference? With absolute, you get the leading slash for each file, like so:
/opt/myfile
When those files get restored, it doesn't matter where you start the restore from; it will always go to the original path from which the archive was taken, like so:
/opt/myfile
Using relative strips the leading slash off. This means you have more flexibility on where you want the contents restored to. For example, suppose you have the archive myachive.tar containing this:
opt/myfile
Now you could restore back to the original location by restoring from the root file system, like so:
# cd /
# tar –xvf myarchive.tar
Or maybe you want the contents restored to within the directory /holding:
# cd /holding
# tar –xvf myarchive.tar
So you end up with this:
/holding/opt/myfile
My Files
For this demonstration, we'll be archiving the following file systems but excluding a couple of them as we go along. By using the exclude option, we'll also exclude a single file. When you need to archive a bunch of file systems or directories, you no doubt will want to exclude some of them. Perhaps they are not required or you need to save space on the size of your tar archive. These are the most common reasons for using the exclude option,
# df | grep grids
/dev/lv00 4194304 4062520 4% 21 1% /grids
/dev/fslv05 262144 261424 1% 7 1% /grids/files
/dev/fslv06 262144 261424 1% 7 1% /grids/logs
/dev/fslv07 262144 261424 1% 7 1% /grids/archive
/dev/fslv08 262144 261432 1% 6 1% /grids/db
Excluding Using GNUtar
To exclude files, you can supply the pattern either in a file for GNUtar to pull in or on the command line when issuing the GNUtar command. This is the format:
--exclude-from=<exclude_file>
--exclude='<exclude file names>'
If you have quite a few directories to exclude, I recommend putting them into a file. Using our example, suppose I want to archive all the /grids file systems except these:
/grids/logs
/grids/archive
I could use the exclude file called excl.txt:
# cat excl.txt
*logs*
*archive*
Note that in the above file contents I have used regular expressions to exclude those directories. Both versions of tar allow regular expressions when supplying pattern-matching.
When issuing an exclude option with GNUtar, it's always best to provide the exclude parameter before any other GNUtar parameters, like so:
/opt/freeware/bin/tar --exclude-from=excl.txt -cvf /holdme/grids.tar /grids
In the above command, the /grids files systems are archived to the tar file /holdme/grids.tar. Of course, the logs and archive file systems have been excluded from the archive.
As noted earlier, GNUtar removes the loading slash (/), so the archive contents are relative. To make an archive absolute, use the parameter - - absolute-names, like so:
/opt/freeware/bin/tar --absolute-names --exclude-from=excl.txt -cvf /holdme/grids.tar /grids
If you would rather provide the full path to the directory or file in the exclude file, remember to remove the leading slash. If using the default GNUtar, like so:
grids/logs
grids/archive
Let's now look at parsing the exclude pattern on the command line. It's pretty much the same. Use this parameter: --exclude
So to exclude the /grids/logs/tempfile.log, I could use this:
/opt/freeware/bin/tar --exclude='grids/logs/tempfile.log' -cvf /holdme/grids.tar /grids
Or to exclude /grids/logs file system, I could use this:
/opt/freeware/bin/tar --exclude='grids/logs' -cvf /holdme/grids.tar /grids
The methods I have discussed above for archiving using the exclude parameter can also be applied when extracting or viewing a GNUtar archive.
Excluding Using AIX tar
Using AIX tar to exclude directories or files employs the same pattern-matching as in GNUtar, except that, when extracting an archive, do not use the ampersand (*) wild card. AIX tar will get confused.
This is the format:
-X <exclude_file>
Also note that you cannot use the command line to exclude. AIX tar expects the list of files to be excluded in a file. For example, suppose I use the same excl.txt file previously to exclude:
/grids/logs
/grids/archive
The following tar command would back up all of /grids excluding the files in excl.txt.
/usr/bin/tar -X /tmp/excl.txt -cvf /holdme/grids.tar /grids
AIX tar will inform you what files are being excluded, unlike GNU tar. Using the above example to archive, the truncated output could be this:
# /usr/bin/tar -X /tmp/excl.txt -cvf /holdme/grids.tar /grids
a /grids
a /grids/lost+found
a /grids/files
a /grids/files/apds.tv 3 blocks.
a /grids/files/app1.tv 3 blocks.
a /grids/files/apxs.tv 3 blocks.
a /grids/files/lost+found
a /grids/logs (excluded)
a /grids/archive (excluded)
a /grids/db
…
…
Note that the above output informs us that the logs and archive directories are excluded. Pretty cool, don't you think?
To exclude a single file from being backed up, simply supply the full pathname to the file:
# cat /tmp/excl.txt
/grids/logs/tempfile.log
The command should now be familiar:
# /usr/bin/tar -X /tmp/excl.txt -cvf /holdme/grids.tar /grids
a /grids
a /grids/lost+found
…
…
a /grids/logs/daily.log 3 blocks.
a /grids/logs/daily.log1 3 blocks.
a /grids/logs/daily.log2 3 blocks.
a /grids/logs/lost+found
a /grids/logs/tempfile.log (excluded)
a /grids/archive
a /grids/archive/lost+found
…
Which to Choose?
For both versions of tar, you can mix and match file names or directories or file systems for exclusion in the exclude file. Both versions of tar allow flexibility. I generally use GNUtar only when I want to compress files on the fly. Otherwise, I stick with AIX tar; it's never let me down. If you want GNUtar installed, go to the IBM AIX toolbox site.
LATEST COMMENTS
MC Press Online