Renames a file or directory in a backup to match a corresponding name change in the filesystem. $ hb rename [-c backupdir] origpath newpath If dedup is activated, rename is not that important because HashBackup will usually save renamed objects without using much new backup space, but it will have to read every renamed file. Rename changes the path in the backup to match the path in the filesystem so the next backup will not have to read renamed files again. Rename is limited to: - changing the last pathname component - moving a path to one of its parent directories - moving a path to a different existing directory - a combination of these - does not work on sharded backups Examples of renames that work: /home/jim -> /home/fred /mnt/data -> /mnt/storage /home/jim -> /jim /Users -> /home /Users/ab -> /xy Examples of renames that may fail: /Users/jim -> /home/jim if /home/jim already exists /Users/jim -> /Users/fred/jim if /Users/fred doesn't already exist The original path is renamed in ALL versions. If a directory is renamed, all files in it are also renamed. Unlike the Unix mv command, you have to give the complete new pathname, ie, to move /home/jim to /, use /jim as the newpath, not just /. If rename can't do what you need to make pathnames match, a bind mount on Linux or nullfs mount on FreeBSD might work to make your filesystem tree appear with a new name: $ mount --bind /nfs/snapshot.N /targetpath (Linux) $ mount_nullfs /targetpath /nfs/snapshot.N (FreeBSD) Then backup /targetpath with HashBackup. Example #1 In this example, a file abc is created under /mnt/tank/files and backed up with HashBackup. The filesystem layout is changed by moving /mnt/tank to /tank, and the hb rename command is used to adjust the backup to reflect the new filesystem layout. When /tank is backed up again, no new files are saved. [jim@mb ~]$ hb init -c hb HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb Permissions set for owner access only Created key file /Users/jim/hb/key.conf Key file set to read-only Setting include/exclude defaults: /Users/jim/hb/inex.conf VERY IMPORTANT: your backup is encrypted and can only be accessed with the encryption key, stored in the file: /Users/jim/hb/key.conf You MUST make copies of this file and store them in a secure location, separate from your computer and backup data. If your hard drive fails, you will need this key to restore your files. If you setup any remote destinations in dest.conf, that file should be copied too.
Backup directory initialized [jim@mb ~]$ ls /mnt [jim@mb ~]$ sudo sh Password: sh-3.2# mkdir /mnt/tank sh-3.2# mkdir /mnt/tank/files sh-3.2# echo abc >/mnt/tank/files/abc sh-3.2# hb backup -c hb /mnt HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb Backup start: 2017-08-08 11:41:12 Copied HB program to /Users/jim/hb/hb#1926 This is backup version: 0 Dedup not enabled; use -Dmemsize to enable /mnt /mnt/tank /mnt/tank/files /mnt/tank/files/abc /Users/jim/hb/inex.conf Time: 0.4s CPU: 0.1s, 30% Mem: 54 MB Checked: 9 paths, 515 bytes, 515 bytes Saved: 9 paths, 515 bytes, 515 bytes Excluded: 0 Dupbytes: 0 Compression: 40%, 1.7:1 Efficiency: 0.00 MB reduced/cpusec Space: 304 bytes, 139 KB total No errors sh-3.2# hb rename -c hb /mnt/tank /tank HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb New path doesn't exist in your filesystem. Rename anyway? yes Renaming path /mnt/tank to /tank sh-3.2# mv /mnt/tank /tank sh-3.2# hb backup -c hb /tank HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb Backup start: 2017-08-08 11:42:01 This is backup version: 1 Dedup not enabled; use -Dmemsize to enable Time: 0.1s CPU: 0.1s, 57% Mem: 53 MB Checked: 8 paths, 515 bytes, 515 bytes Saved: 4 paths, 0 bytes, 0 bytes Excluded: 0 No errors sh-3.2# Example #2 This example is similar, but instead of changing the filesystem tree with the Unix mv command, the Unix cp command is used instead. The big difference is that the mv command preserves the inode and ctime fields of each file, while the cp command does not. Because the inode and ctime fields have changed, HashBackup will re-read each file to verify that the data is identical to the backup. If dedup is enabled on both backups, very little new data will be saved. If dedup was not enabled, HashBackup will have to save all files again. sh-3.2# mkdir /mnt/tank sh-3.2# mkdir /mnt/tank/files sh-3.2# dd if=/dev/urandom of=/mnt/tank/files/bigfile bs=1m count=500 500+0 records in 500+0 records out
524288000 bytes transferred in 36.657870 secs (14302195 bytes/sec) sh-3.2# hb init -c hb HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb Permissions set for owner access only Created key file /Users/jim/hb/key.conf Key file set to read-only Setting include/exclude defaults: /Users/jim/hb/inex.conf VERY IMPORTANT: your backup is encrypted and can only be accessed with the encryption key, stored in the file: /Users/jim/hb/key.conf You MUST make copies of this file and store them in a secure location, separate from your computer and backup data. If your hard drive fails, you will need this key to restore your files. If you setup any remote destinations in dest.conf, that file should be copied too.
Backup directory initialized sh-3.2# hb backup -c hb /mnt -D1g HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb Backup start: 2017-08-08 16:56:18 Copied HB program to /Users/jim/hb/hb#1926 This is backup version: 0 Dedup enabled, 0% of current, 0% of max /mnt /mnt/tank /mnt/tank/files /mnt/tank/files/bigfile /Users/jim/hb/inex.conf Time: 7.8s CPU: 10.9s, 138% Mem: 99 MB Checked: 9 paths, 524288511 bytes, 524 MB Saved: 9 paths, 524288511 bytes, 524 MB Excluded: 0 Dupbytes: 0 Space: 524 MB, 524 MB total No errors sh-3.2# cp -rp /mnt/tank /tank sh-3.2# hb rename -c hb /mnt/tank /tank HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb Renaming path /mnt/tank to /tank sh-3.2# hb backup -c hb /tank -D1g HashBackup build #1926 Copyright 2009-2017 HashBackup, LLC Backup directory: /Users/jim/hb Backup start: 2017-08-08 16:57:33 This is backup version: 1 Dedup enabled, 5% of current, 0% of max /tank /tank/files /tank/files/bigfile <== file is saved again because inode has changed Time: 4.2s CPU: 5.0s, 118% Mem: 79 MB Checked: 8 paths, 524288511 bytes, 524 MB Saved: 7 paths, 524288000 bytes, 524 MB Excluded: 0 Dupbytes: 524288000, 524 MB, 100% <== dedup is on so no new data is saved Space: 0 bytes, 525 MB total No errors sh-3.2# |
Commands >