Next: Cleaning Up, Previous: Viewing And Editing, Up: Common Tasks
You can pass a list of files produced by find to a file
archiving program. GNU tar and cpio can both read lists
of file names from the standard input—either delimited by nulls (the
safe way) or by blanks (the lazy, risky default way). To use
null-delimited names, give them the ‘--null’ option. You can
store a file archive in a file, write it on a tape, or send it over a
network to extract on another machine.
One common use of find to archive files is to send a list of
the files in a directory tree to cpio. Use ‘-depth’ so if
a directory does not have write permission for its owner, its contents
can still be restored from the archive since the directory's
permissions are restored after its contents. Here is an example of
doing this using cpio; you could use a more complex find
expression to archive only certain files.
find . -depth -print0 |
cpio --create --null --format=crc --file=/dev/nrst0
You could restore that archive using this command:
cpio --extract --null --make-dir --unconditional \
--preserve --file=/dev/nrst0
Here are the commands to do the same things using tar:
find . -depth -print0 |
tar --create --null --files-from=- --file=/dev/nrst0
tar --extract --null --preserve-perm --same-owner \
--file=/dev/nrst0
Here is an example of copying a directory from one machine to another:
find . -depth -print0 | cpio -0o -Hnewc |
rsh other-machine "cd `pwd` && cpio -i0dum"