[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Copy Linux Filesystem/Check/Compare Filesystems



Once upon a time Doug MacFarlane said...
> 
> I will shortly need to copy about 100 gb of data from one filesystem to
> another.  [...]
> 
> Any suggestions?  Just exactly how would one tar one filesystem to another,
> without the intermediate tar file?

I've done it using cpio(1), since tar didn't like the unix domain
sockets in /var/spool/postfix/private.

I've attached the script I now use to copy all my filesystems or trees
around the place. The script does not cross filesystem boundaries, but
it is easily modified to do that.

> Also, once the copy is complete, I'd love a tool that would compare the two
> filesystems, including crc or md5 checksums on each file, to make sure that
> they are, in fact, identical.

Can't help here, sorry.

#!/bin/bash

if [ $# -ne 2 ] ; then
  echo "Usage: $0 <source_dir> <dest_dir>" >&2
  echo "eg: \"$0 /var /mnt\" will create /mnt/var"
  echo "eg: \"$0 /var/spool /mnt\" will create /mnt/spool"
  echo "eg: \"$0 /var/spool /mnt/var\" will create /mnt/var/spool"
  echo "eg: \"$0 / /mnt\" will copy the root fs to /mnt"
  exit 1
fi

if [ \! -d "$2" ] ; then
  echo "$2 is not a directory" >&2
  exit 2
fi

dir_source=$(dirname "$1")
base_source=$(basename "$1")
(
  cd "$dir_source"
  find "$base_source" -xdev \! -name lost+found |
    cpio --create \
      --reset-access-time \
      --quiet \
      --format=newc
) | (
  cd "$2"
  cpio --extract \
    --preserve-modification-time \
    --no-absolute-filenames \
    --quiet 
)


Reply to: