1d05b679bSMatthew Dillon INCREMENTAL BACKUP HOWTO 2d05b679bSMatthew Dillon 3d05b679bSMatthew Dillon This document describes one of several ways to set up a LAN backup and 4d05b679bSMatthew Dillon an off-site WAN backup system using cpdup's hardlinking capabilities. 5d05b679bSMatthew Dillon 6d05b679bSMatthew Dillon The features described in this document are also encapsulated in scripts 7d05b679bSMatthew Dillon which can be found in the scripts/ directory. These scripts can be used 8d05b679bSMatthew Dillon to automate all backup steps except for the initial preparation of the 9d05b679bSMatthew Dillon backup and off-site machine's directory topology. Operation of these 10d05b679bSMatthew Dillon scripts is described in the last section of this document. 11d05b679bSMatthew Dillon 12d05b679bSMatthew Dillon 13d05b679bSMatthew Dillon PART 1 - PREPARE THE LAN BACKUP BOX 14d05b679bSMatthew Dillon 15d05b679bSMatthew Dillon The easiest way to create a LAN backup box is to NFS mount all your 16d05b679bSMatthew Dillon backup clients onto the backup box. It is also possible to use cpdup's 17d05b679bSMatthew Dillon remote host feature to access your client boxes but that requires root 18293141b7SMatthew Dillon access to the client boxes and is not described here. (But see the 19293141b7SMatthew Dillon sections "OFF-SITE BACKUPS" and "SSH SECURITY TIPS" below.) 20d05b679bSMatthew Dillon 21d05b679bSMatthew Dillon Create a directory on the backup machine called /nfs, a subdirectory 22d05b679bSMatthew Dillon foreach remote client, and subdirectories for each partition on each 23d05b679bSMatthew Dillon client. Remember that cpdup does not cross mount points so you will 24d05b679bSMatthew Dillon need a mount for each partition you wish to backup. For example: 25d05b679bSMatthew Dillon 26d05b679bSMatthew Dillon [ ON LAN BACKUP BOX ] 27d05b679bSMatthew Dillon 28d05b679bSMatthew Dillon mkdir /nfs 29d05b679bSMatthew Dillon mkdir /nfs/box1 30d05b679bSMatthew Dillon mkdir /nfs/box1/home 31d05b679bSMatthew Dillon mkdir /nfs/box1/var 32d05b679bSMatthew Dillon 33d05b679bSMatthew Dillon Before you actually do the NFS mount, create a dummy file for each 34d05b679bSMatthew Dillon mount point that can be used by scripts to detect when an NFS mount 35d05b679bSMatthew Dillon has not been done. Scripts can thus avoid a common failure scenario 36*bbb35c81SSascha Wildner and not accidentally cpdup an empty mount point to the backup partition 37d05b679bSMatthew Dillon (destroying that day's backup in the process). 38d05b679bSMatthew Dillon 39d05b679bSMatthew Dillon touch /nfs/box1/home/NOT_MOUNTED 40d05b679bSMatthew Dillon touch /nfs/box1/var/NOT_MOUNTED 41d05b679bSMatthew Dillon 42d05b679bSMatthew Dillon Once the directory structure has been set up, do your NFS mounts and 43d05b679bSMatthew Dillon also add them to your fstab. Since you will probably wind up with a 44d05b679bSMatthew Dillon lot of mounts it is a good idea to use 'ro,bg' (readonly, background 45d05b679bSMatthew Dillon mount) in the fstab entries. 46d05b679bSMatthew Dillon 47d05b679bSMatthew Dillon mount box1:/home /nfs/box1/home 48d05b679bSMatthew Dillon mount box1:/var /nfs/box1/var 49d05b679bSMatthew Dillon 50d05b679bSMatthew Dillon You should create a huge /backup partition on your backup machine which 51d05b679bSMatthew Dillon is capable of holding all your mirrors. Create a subdirectory called 52d05b679bSMatthew Dillon /backup/mirrors in your huge backup partition. 53d05b679bSMatthew Dillon 54d05b679bSMatthew Dillon mount <huge_disk> /backup 55d05b679bSMatthew Dillon mkdir /backup/mirrors 56d05b679bSMatthew Dillon 57d05b679bSMatthew Dillon 58d05b679bSMatthew Dillon PART 2 - DOING A LEVEL 0 BACKUP 59d05b679bSMatthew Dillon 60d05b679bSMatthew Dillon (If you use the supplied scripts, a level 0 backup can be accomplished 61d05b679bSMatthew Dillon simply by running the 'do_mirror' script with an argument of 0). 62d05b679bSMatthew Dillon 63d05b679bSMatthew Dillon Create a level 0 backup using a standard cpdup with no special arguments 64d05b679bSMatthew Dillon other then -i0 -s0 (tell it not to ask questions and turn off the 65d05b679bSMatthew Dillon file-overwrite-with-directory safety feature). Name the mirror with 66d05b679bSMatthew Dillon the date in a string-sortable format. 67d05b679bSMatthew Dillon 68d05b679bSMatthew Dillon set date = `date "+%Y%m%d"` 69d05b679bSMatthew Dillon mkdir /backup/mirrors/box1.${date} 70d05b679bSMatthew Dillon cpdup -i0 -s0 /nfs/box1/home /backup/mirrors/box1.${date}/home 71d05b679bSMatthew Dillon cpdup -i0 -s0 /nfs/box1/var /backup/mirrors/box1.${date}/var 72d05b679bSMatthew Dillon 73d05b679bSMatthew Dillon Create a softlink to the most recently completed backup, which is your 74a05b5f9bSMatthew Dillon level 0 backup. Note that using 'ln -sf' will create a link in the 75a05b5f9bSMatthew Dillon subdirectory pointed to by the current link, not replace the current 76a05b5f9bSMatthew Dillon link. 'ln -shf' can be used to replace the link but is not portable. 77a05b5f9bSMatthew Dillon 'mv -f' has the same problem. 78d05b679bSMatthew Dillon 79d05b679bSMatthew Dillon sync 80a05b5f9bSMatthew Dillon rm -f /backup/mirrors/box1 81a05b5f9bSMatthew Dillon ln -s /backup/mirrors/box1.${date} /backup/mirrors/box1 82d05b679bSMatthew Dillon 83d05b679bSMatthew Dillon PART 3 - DO AN INCREMENTAL BACKUP 84d05b679bSMatthew Dillon 85d05b679bSMatthew Dillon An incremental backup is exactly the same as a level 0 backup EXCEPT 86d05b679bSMatthew Dillon you use the -H option to specify the location of the most recent 87d05b679bSMatthew Dillon completed backup. We simply maintain the handy softlink pointing at 88d05b679bSMatthew Dillon the most recent completed backup and the cpdup required to do this 89d05b679bSMatthew Dillon becomes trivial. 90d05b679bSMatthew Dillon 91d05b679bSMatthew Dillon Each day's incremental backup will reproduce the ENTIRE directory topology 92d05b679bSMatthew Dillon for the client, but cpdup will hardlink files from the most recent backup 93d05b679bSMatthew Dillon instead of copying them and this is what saves you all the disk space. 94d05b679bSMatthew Dillon 95d05b679bSMatthew Dillon set date = `date "+%Y%m%d"` 96d05b679bSMatthew Dillon mkdir /backup/mirrors/box1.${date} 97d05b679bSMatthew Dillon if ( "`readlink /backup/mirrors/box1`" == "box1.${date}" ) then 98d05b679bSMatthew Dillon echo "silly boy, an incremental already exists for today" 99d05b679bSMatthew Dillon exit 1 100d05b679bSMatthew Dillon endif 101d05b679bSMatthew Dillon cpdup -H /backup/mirrors/box1 \ 102d05b679bSMatthew Dillon -i0 -s0 /nfs/box1/home /backup/mirrors/box1.${date}/home 103d05b679bSMatthew Dillon 104d05b679bSMatthew Dillon Be sure to update your 'most recent backup' softlink, but only do it 105d05b679bSMatthew Dillon if the cpdup's for all the partitions for that client have succeeded. 106d05b679bSMatthew Dillon That way the next incremental backup will be based on the previous one. 107d05b679bSMatthew Dillon 108a05b5f9bSMatthew Dillon rm -f /backup/mirrors/box1 109a05b5f9bSMatthew Dillon ln -s /backup/mirrors/box1.${date} /backup/mirrors/box1 110d05b679bSMatthew Dillon 111d05b679bSMatthew Dillon Since these backups are mirrors, locating a backup is as simple 112d05b679bSMatthew Dillon as CDing into the appropriate directory. If your filesystem has a 113d05b679bSMatthew Dillon hardlink limit and cpdup hits it, cpdup will 'break' the hardlink 114d05b679bSMatthew Dillon and copy the file instead. Generally speaking only a few special cases 115d05b679bSMatthew Dillon will hit the hardlink limit for a filesystem. For example, the 116d05b679bSMatthew Dillon CVS/Root file in a checked out cvs repository is often hardlinked, and 117d05b679bSMatthew Dillon the sheer number of hardlinked 'Root' files multiplied by the number 118d05b679bSMatthew Dillon of backups can often hit the filesystem hardlink limit. 119d05b679bSMatthew Dillon 120d05b679bSMatthew Dillon PART 4 - DO AN INCREMENTAL VERIFIED BACKUP 121d05b679bSMatthew Dillon 122d05b679bSMatthew Dillon Since your incremental backups use hardlinks heavily the actual file 123d05b679bSMatthew Dillon might exist on the physical /backup disk in only one place even though 124d05b679bSMatthew Dillon it may be present in dozens of daily mirrors. To ensure that the 125d05b679bSMatthew Dillon file being hardlinked does not get corrupted cpdup's -f option can be 1263f5e28f4SSascha Wildner used in conjunction with -H to force cpdup to validate the contents 127d05b679bSMatthew Dillon of the file, even if all the stat info looks identical. 128d05b679bSMatthew Dillon 129d05b679bSMatthew Dillon cpdup -f -H /backup/mirrors/box1 ... 130d05b679bSMatthew Dillon 13156be8454SSascha Wildner You can create completely redundant (non-hardlinked-dependent) backups 132d05b679bSMatthew Dillon by doing the equivalent of your level 0, i.e. not using -H. However I 133d05b679bSMatthew Dillon do NOT recommend that you do this, or that you do it very often (maybe 134d05b679bSMatthew Dillon once every 6 months at the most), because each mirror created this way 135d05b679bSMatthew Dillon will have a distinct copy of all the file data and you will quickly 136d05b679bSMatthew Dillon run out of space in your /backup partition. 137d05b679bSMatthew Dillon 138*bbb35c81SSascha Wildner MAINTENANCE OF THE "/backup" DIRECTORY 139d05b679bSMatthew Dillon 140d05b679bSMatthew Dillon Now, clearly you are going to run out of space in /backup if you keep 141d05b679bSMatthew Dillon doing this, but you may be surprised at just how many daily incrementals 142d05b679bSMatthew Dillon you can create before you fill up your /backup partition. 143d05b679bSMatthew Dillon 144d05b679bSMatthew Dillon If /backup becomes full, simply start rm -rf'ing older mirror directories 145d05b679bSMatthew Dillon until enough space is freed up. You do not have to remove the oldest 146d05b679bSMatthew Dillon directory first. In fact, you might want to keep it around and remove 147d05b679bSMatthew Dillon a day's backup here, a day's backup there, etc, until you free up enough 148d05b679bSMatthew Dillon space. 149d05b679bSMatthew Dillon 150d05b679bSMatthew Dillon OFF-SITE BACKUPS 151d05b679bSMatthew Dillon 152d05b679bSMatthew Dillon Making an off-site backup involves similar methodology, but you use 153d05b679bSMatthew Dillon cpdup's remote host capability to generate the backup. To avoid 154d05b679bSMatthew Dillon complications it is usually best to take a mirror already generated on 155d05b679bSMatthew Dillon your LAN backup box and copy that to the remote box. 156d05b679bSMatthew Dillon 157d05b679bSMatthew Dillon The remote backup box does not use NFS, so setup is trivial. Just 158d05b679bSMatthew Dillon create your super-large /backup partition and mkdir /backup/mirrors. 159d05b679bSMatthew Dillon Your LAN backup box will need root access via ssh to your remote backup 160293141b7SMatthew Dillon box. See the section "SSH SECURITY TIPS" below. 161d05b679bSMatthew Dillon 162d05b679bSMatthew Dillon You can use the handy softlink to get the latest 'box1.date' mirror 163d05b679bSMatthew Dillon directory and since the mirror is all in one partition you can just 164d05b679bSMatthew Dillon cpdup the entire machine in one command. Use the same dated directory 165d05b679bSMatthew Dillon name on the remote box, so: 166d05b679bSMatthew Dillon 167d05b679bSMatthew Dillon # latest will wind up something like 'box1.20060915' 168d05b679bSMatthew Dillon set latest = `readlink /backup/mirrors/box1` 169d05b679bSMatthew Dillon cpdup -i0 -s0 /backup/mirrors/$latest remote.box:/backup/mirrors/$latest 170d05b679bSMatthew Dillon 171d05b679bSMatthew Dillon As with your LAN backup, create a softlink on the backup box denoting the 172d05b679bSMatthew Dillon latest mirror for any given site. 173d05b679bSMatthew Dillon 174d05b679bSMatthew Dillon if ( $status == 0 ) then 175d05b679bSMatthew Dillon ssh remote.box -n \ 176a05b5f9bSMatthew Dillon "rm -f /backup/mirrors/box1; ln -s /backup/mirrors/$latest /backup/mirrors/box1" 177d05b679bSMatthew Dillon endif 178d05b679bSMatthew Dillon 179d05b679bSMatthew Dillon Incremental backups can be accomplished using the same cpdup command, 180d05b679bSMatthew Dillon but adding the -H option to the latest backup on the remote box. Note 181d05b679bSMatthew Dillon that the -H path is relative to the remote box, not the LAN backup box 182d05b679bSMatthew Dillon you are running the command from. 183d05b679bSMatthew Dillon 184d05b679bSMatthew Dillon set latest = `readlink /backup/mirrors/box1` 185d05b679bSMatthew Dillon set remotelatest = `ssh remote.box -n "readlink /backup/mirrors/box1"` 186d05b679bSMatthew Dillon if ( "$latest" == "$remotelatest" ) then 187d05b679bSMatthew Dillon echo "silly boy, you already made a remote incremental backup today" 188d05b679bSMatthew Dillon exit 1 189d05b679bSMatthew Dillon endif 190d05b679bSMatthew Dillon cpdup -H /backup/mirrors/$remotelatest \ 191d05b679bSMatthew Dillon -i0 -s0 /backup/mirrors/$latest remote.box:/backup/mirrors/$latest 192d05b679bSMatthew Dillon if ( $status == 0 ) then 193d05b679bSMatthew Dillon ssh remote.box -n \ 194a05b5f9bSMatthew Dillon "rm -f /backup/mirrors/box1; ln -s /backup/mirrors/$latest /backup/mirrors/box1" 195d05b679bSMatthew Dillon endif 196d05b679bSMatthew Dillon 197d05b679bSMatthew Dillon Cleaning out the remote directory works the same as cleaning out the LAN 198d05b679bSMatthew Dillon backup directory. 199d05b679bSMatthew Dillon 200d05b679bSMatthew Dillon 201d05b679bSMatthew Dillon RESTORING FROM BACKUPS 202d05b679bSMatthew Dillon 203d05b679bSMatthew Dillon Each backup is a full filesystem mirror, and depending on how much space 204d05b679bSMatthew Dillon you have you should be able to restore it simply by cd'ing into the 205d05b679bSMatthew Dillon appropriate backup directory and using 'cpdup blah box1:blah' (assuming 206d05b679bSMatthew Dillon root access), or you can export the backup directory via NFS to your 207d05b679bSMatthew Dillon client boxes and use cpdup locally on the client to extract the backup. 208d05b679bSMatthew Dillon Using NFS is probably the most efficient solution. 209d05b679bSMatthew Dillon 210d05b679bSMatthew Dillon 211d05b679bSMatthew Dillon PUTTING IT ALL TOGETHER - SOME SCRIPTS 212d05b679bSMatthew Dillon 213d05b679bSMatthew Dillon Please refer to the scripts in the script/ subdirectory. These scripts 214d05b679bSMatthew Dillon are EXAMPLES ONLY. If you want to use them, put them in your ~root/adm 215d05b679bSMatthew Dillon directory on your backup box and set up a root crontab. 216d05b679bSMatthew Dillon 217d05b679bSMatthew Dillon First follow the preparation rules in PART 1 above. The scripts do not 218d05b679bSMatthew Dillon do this automatically. Edit the 'params' file that the scripts use 219d05b679bSMatthew Dillon to set default paths and such. 220d05b679bSMatthew Dillon 221d05b679bSMatthew Dillon ** FOLLOW DIRECTIONS IN PART 1 ABOVE TO SET UP THE LAN BACKUP BOX ** 222d05b679bSMatthew Dillon 223d05b679bSMatthew Dillon Copy the scripts to ~/adm. Do NOT install a crontab yet (but an example 224d05b679bSMatthew Dillon can be found in scripts/crontab). 225d05b679bSMatthew Dillon 226d05b679bSMatthew Dillon Do a manual lavel 0 LAN BACKUP using the do_mirror script. 227d05b679bSMatthew Dillon 228d05b679bSMatthew Dillon cd ~/adm 229d05b679bSMatthew Dillon ./do_mirror 0 230d05b679bSMatthew Dillon 231d05b679bSMatthew Dillon Once done you can do incremental backups using './do_mirror 1' to do a 232d05b679bSMatthew Dillon verified incremental, or './do_mirror 2' to do a stat-optimized 233d05b679bSMatthew Dillon incremental. You can enable the cron jobs that run do_mirror and 234d05b679bSMatthew Dillon do_cleanup now. 235d05b679bSMatthew Dillon 236d05b679bSMatthew Dillon -- 237d05b679bSMatthew Dillon 238d05b679bSMatthew Dillon Setting up an off-site backup box is trivial. The off-site backup box 239d05b679bSMatthew Dillon needs to allow root ssh logins from the LAN backup box (at least for 240d05b679bSMatthew Dillon now, sorry!). Set up the off-site backup directory, typically 241d05b679bSMatthew Dillon /backup/mirrors. Then do a level 0 backup from your LAN backup box 242d05b679bSMatthew Dillon to the off-site box using the do_remote script. 243d05b679bSMatthew Dillon 244d05b679bSMatthew Dillon cd ~/adm 245d05b679bSMatthew Dillon ./do_remote 0 246d05b679bSMatthew Dillon 247d05b679bSMatthew Dillon Once done you can do incremental backups using './do_remote 1' to do a 248d05b679bSMatthew Dillon verified incremental, or './do_mirror 2' to do a stat-optimized 249d05b679bSMatthew Dillon incremental. You can enable the cron jobs that run do_remote now. 250d05b679bSMatthew Dillon 251d05b679bSMatthew Dillon NOTE! It is NOT recommended that you use verified-incremental backups 252d05b679bSMatthew Dillon over a WAN, as all related data must be copied over the wire every single 253d05b679bSMatthew Dillon day. Instead, I recommend sticking with stat-optimized backups 254d05b679bSMatthew Dillon (./do_mirror 2). 255d05b679bSMatthew Dillon 256d05b679bSMatthew Dillon You will also need to set up a daily cleaning script on the off-site 257d05b679bSMatthew Dillon backup box. 258d05b679bSMatthew Dillon 259d05b679bSMatthew Dillon SCRIPT TODOS - the ./do_cleanup script is not very smart. We really 260d05b679bSMatthew Dillon should do a tower-of-hanoi removal 261d05b679bSMatthew Dillon 262d05b679bSMatthew Dillon 263293141b7SMatthew Dillon SSH SECURITY TIPS 264293141b7SMatthew Dillon 265293141b7SMatthew Dillon To allow root access via ssh, add the following line to your sshd 266293141b7SMatthew Dillon configuration on the client boxes (typically /etc/ssh/sshd_config): 267293141b7SMatthew Dillon 268293141b7SMatthew Dillon PermitRootLogin forced-commands-only 269293141b7SMatthew Dillon 270293141b7SMatthew Dillon If your OpenSSH version is too old to recognize that setting, you 271293141b7SMatthew Dillon should update to a more recent version immediately. 272c0538630SMatthew Dillon Restart sshd for the settings to take effect. 273293141b7SMatthew Dillon 274293141b7SMatthew Dillon On the backup machine, create a special backup key for root: 275293141b7SMatthew Dillon 276293141b7SMatthew Dillon mkdir /root/.ssh # if it doesn't already exist 277293141b7SMatthew Dillon cd /root/.ssh 278293141b7SMatthew Dillon ssh-keygen -t dsa -N "" -f backup-key 279293141b7SMatthew Dillon 280293141b7SMatthew Dillon You now have a key pair, consisting of a secret key called "backup-key" 281293141b7SMatthew Dillon and a public key called "backup-key.pub". The secret key must *NEVER* 282293141b7SMatthew Dillon leave the backup machine nor be disclosed in any way! Note that we 283293141b7SMatthew Dillon haven't procted the secret key with a passphrase (-N "") because it 284293141b7SMatthew Dillon will be used by cron jobs where no passphrase can be entered. 285293141b7SMatthew Dillon 286293141b7SMatthew Dillon On the client boxes, create a file /root/.ssh/authorized_keys. 287293141b7SMatthew Dillon It should contain just this line: 288293141b7SMatthew Dillon 289293141b7SMatthew Dillon command="/usr/local/bin/cpdup -S",from="<BAKHOST>",no-pty, 290293141b7SMatthew Dillon no-port-forwarding,no-X11-forwarding,no-agent-forwarding <PUBKEY> 291293141b7SMatthew Dillon 292293141b7SMatthew Dillon This must be on one long line; it has been broken up here for 293293141b7SMatthew Dillon readability only. Note that the options must be separated by commas 294293141b7SMatthew Dillon *ONLY* (no spaces). Replace <BAKHOST> with the IP address or DNS name 295293141b7SMatthew Dillon of the backup machine. Replace <PUBKEY> with the contents of the 296293141b7SMatthew Dillon file /root/.ssh/backup-key.pub from the backup machine (the public key, 297293141b7SMatthew Dillon not the secret key!). It typically starts with "ssh-dss" followed by 298293141b7SMatthew Dillon a long character sequence that looks like line noise, followed by a 299293141b7SMatthew Dillon comment that typically indicates who created the key. 300293141b7SMatthew Dillon 301293141b7SMatthew Dillon The format of the authorized_keys file is documented in the sshd(8) 302293141b7SMatthew Dillon manual page. Please refer to it for more details. 303293141b7SMatthew Dillon 304293141b7SMatthew Dillon If you have done all of the above correctly, then the root user on the 305293141b7SMatthew Dillon backup machine will be able to log into the client boxes as root and 306293141b7SMatthew Dillon execute "/usr/local/bin/cpdup -S", but nothing else. 307293141b7SMatthew Dillon 308c0538630SMatthew Dillon To further improve security, you can place the slave cpdup on the client 309c0538630SMatthew Dillon machine into read-only mode by adding the -R option. In this case, the 310c0538630SMatthew Dillon line from the authorized_keys file should begin as follows: 311c0538630SMatthew Dillon 312c0538630SMatthew Dillon command="/usr/local/bin/cpdup -RS",from="<BAKHOST>",etc... 313c0538630SMatthew Dillon 314c0538630SMatthew Dillon If you do that, your backup server can only pull backups from the client 315c0538630SMatthew Dillon machine, but it won't be able to change anything on it. That is, you 316c0538630SMatthew Dillon cannot use the client machine as a remote target. So, if an attacker 317c0538630SMatthew Dillon manages to be able to execute commands on your backup machine, he won't 318c0538630SMatthew Dillon be able to do any harm to your clients. This also protects against 319c0538630SMatthew Dillon human errors, e.g. accidentally swapping source and destination. 320c0538630SMatthew Dillon 321c0538630SMatthew Dillon By the way, it doesn't really matter much whether you specify the -R 322c0538630SMatthew Dillon option when running cpdup on the backup machine. If you do it, then 323c0538630SMatthew Dillon the -R option will be passed to the slave, but the command="..." entry 324c0538630SMatthew Dillon from the authorized_keys file overides it anyway, so the slave always 325c0538630SMatthew Dillon runs with the -R option. 326c0538630SMatthew Dillon 327293141b7SMatthew Dillon When using cpdup on the backup machine, make sure that the right key is 328293141b7SMatthew Dillon used by passing the -i option to the ssh command: 329293141b7SMatthew Dillon 330293141b7SMatthew Dillon cpdup -F -i/root/.ssh/backup-key ... 331293141b7SMatthew Dillon 332293141b7SMatthew Dillon If one or both of the machines involved has a slow processor, it might 333293141b7SMatthew Dillon be worthwhile to use a faster encryption algorithm, for example: 334293141b7SMatthew Dillon 335293141b7SMatthew Dillon cpdup -F -cblowfish-cbc ... 336293141b7SMatthew Dillon 337293141b7SMatthew Dillon If your OpenSSH version has been patched to support unencrypted transfers 338293141b7SMatthew Dillon *AND* you trust the physical network between the machines involved, you 339*bbb35c81SSascha Wildner might want to disable encryption altogether: 340293141b7SMatthew Dillon 341293141b7SMatthew Dillon cpdup -F -cnone ... 342