diff options
author | jh <jh@FreeBSD.org> | 2010-09-12 18:53:44 +0000 |
---|---|---|
committer | jh <jh@FreeBSD.org> | 2010-09-12 18:53:44 +0000 |
commit | 7ad5ac6559c0245da0e841850e65a611a2530cfd (patch) | |
tree | cc0b56f8a2a432e86a3768ecd0eabe21b4270900 /usr.sbin/freebsd-update | |
parent | 5da585aeb8d7455d64ab502fddfd32c1f37f7792 (diff) | |
download | FreeBSD-src-7ad5ac6559c0245da0e841850e65a611a2530cfd.zip FreeBSD-src-7ad5ac6559c0245da0e841850e65a611a2530cfd.tar.gz |
In backup_kernel(), support backing up subdirectories and handle files
with spaces correctly.
Approved by: cperciva
MFC after: 1 month
Diffstat (limited to 'usr.sbin/freebsd-update')
-rw-r--r-- | usr.sbin/freebsd-update/freebsd-update.sh | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh index b542077..441d257 100644 --- a/usr.sbin/freebsd-update/freebsd-update.sh +++ b/usr.sbin/freebsd-update/freebsd-update.sh @@ -2638,11 +2638,13 @@ backup_kernel () { # "not ours", backup_kernel_finddir would have exited, so # deleting the directory content is as safe as we can make it. if [ -d $BACKUPKERNELDIR ]; then - rm -f $BACKUPKERNELDIR/* + rm -fr $BACKUPKERNELDIR fi - # Create directory for backup if it doesn't exist. + # Create directories for backup. mkdir -p $BACKUPKERNELDIR + mtree -cdn -p "${KERNELDIR}" | \ + mtree -Ue -p "${BACKUPKERNELDIR}" > /dev/null # Mark the directory as having been created by freebsd-update. touch $BACKUPKERNELDIR/.freebsd-update @@ -2663,9 +2665,8 @@ backup_kernel () { fi # Backup all the kernel files using hardlinks. - find $KERNELDIR -type f $FINDFILTER | \ - sed -Ee "s,($KERNELDIR)/?(.*),\1/\2 ${BACKUPKERNELDIR}/\2," | \ - xargs -n 2 cp -pl + (cd $KERNELDIR && find . -type f $FINDFILTER -exec \ + cp -pl '{}' ${BACKUPKERNELDIR}/'{}' \;) # Re-enable patchname expansion. set +f |