Add Comment

You are not currently logged in. If you do not have a user account then please consider creating one and logging in before you post your comment. This will allow you to track replies to your comment, and take part in the site much more freely.

To add your comment, fill in all the boxes below and then preview it to make sure you're happy with the way that it looks.

This is the comment you were replying to, attached to the article Introduction BackupPC part 1:


Re: Introduction BackupPC part 1
Posted by Anonymous (217.149.xx.xx) on Fri 28 Mar 2008 at 12:53
hello
I use backuppc for about 1.5 year, and i.m happy witch it.

Why use backuppc and sudo, u can easy use root acount to ssh.
If you have acces to run rsync witch id=0, you can simply overwrite any file, so u can change /etc/passwd.

My idea of use backuppc was to create ssh tunell to rsync demon, this idea have some benefits:
- nobady from backuppc can log to backupded host
- nobady from backuped host cant log to backuppc host
- NAT is no more a problem, connection direction is from backuped host to backuppc.

Hire you have my help script, to create cut/paste:

cat create_backuppc_paste.sh
#!/bin/bash

# free port to forward ssh connectin
# each host has own port
PORT=6054
# rsync speed ( 128 = 1Mb/s )
SPEED=512

# backuped host
REMOTE_HOST_NAME="my_hostname"

# rsuncd password (from generator)
RSYND_PASSWORD="Mu6Kacxx"

# command to do ssh on backuppp
SSH_NA_BACKUPPC="ssh backuppc"


###
# Rsync config
###
#in debian
RSYNC_LOCATION="/usr/bin/rsync"
# in OpenBSD
# RSYNC_LOCATION="/usr/local/bin/rsync"

BACKUP_DIR="/"
# exclude from backup
# if you use LVN snapshot put /backup/ prefix
EXCLUDE="/backup/dev /backup/vz/sharedvz/2027/root/old_nagios /backup/vz/sharedvz/2027/root/dev "

###
# LVN SNAPSHOT
###

# YES OR NO
USE_LVN_SNAPSHOT="YES"

# VOLUME GROUP
VG="/dev/main"
# LOGICAL VOLUME
LV="root"

# default mount point = /mnt/rootmirror
if [[ "$USE_LVN_SNAPSHOT" == "YES" ]] ; then BACKUP_DIR="/mnt/rootmirror$BACKUP_DIR" ; fi

palza(){
echo ;echo;echo
echo "# press enter to continue ... "
read
clear
}


clear
echo "#####################################################"
echo "# paste this to backuppc "
echo "#####################################################"
echo
echo "##################"
echo "# create tunel usre "
echo "#################"
echo "useradd -m $REMOTE_HOST_NAME -s /bin/true"
echo "# create ssh key for tunel user "
echo "su $REMOTE_HOST_NAME -s /bin/bash -c \"mkdir /home/$REMOTE_HOST_NAME/.ssh\" "
echo "su $REMOTE_HOST_NAME -s /bin/bash -c \"ssh-keygen -N '' -f /home/$REMOTE_HOST_NAME/.ssh/id_rsa\" "
echo "su $REMOTE_HOST_NAME -s /bin/bash -c \"cp /home/$REMOTE_HOST_NAME/.ssh/id_rsa.pub /home/$REMOTE_HOST_NAME/.ssh/authorized_keys\" "
palza

echo "##################"
echo "# create backuppc konfiguration "
echo "#################"

echo "cat >> /etc/backuppc/hosts << _EOF_"
echo "lh-$PORT-$REMOTE_HOST_NAME 0 backuppc
_EOF_
"

echo "cat >> /etc/backuppc/lh-$PORT-$REMOTE_HOST_NAME.pl << _EOF_"
echo "
#
# Rsync Backup (with rsync daemon on the client)
#

\\\$Conf{XferMethod} = 'rsyncd';

\\\$Conf{RsyncShareName} = ['backup'];

# if needed set a user name and password to access the remote shares
\\\$Conf{RsyncdUserName} = 'backuppc';
\\\$Conf{RsyncdPasswd} = '$RSYND_PASSWORD';
\\\$Conf{RsyncdClientPort} = $PORT;
_EOF_
"

echo "cp /etc/hosts /etc/hosts-`date -I`.backup"
echo "sed -i -e \"s/localhost/localhost lh-$PORT-$REMOTE_HOST_NAME/\" /etc/hosts"

echo "# reload backuppc "
echo "/etc/init.d/backuppc reload"
palza


echo "#####################################################"
echo "# paste this to remote host $REMOTE_HOST_NAME "
echo "#####################################################"
echo
echo "##################"
echo "# create a private ssh key on $REMOTE_HOST_NAME"
echo "#################"
echo "mkdir -p /root/.ssh"
echo "cat > /root/.ssh/id_rsa_backuppc << _EOF_"
$SSH_NA_BACKUPPC "cat /home/$REMOTE_HOST_NAME/.ssh/id_rsa"
echo "_EOF_"
echo "chmod og-rw /root/.ssh/id_rsa_backuppc"
echo
palza


echo "##################"
echo "# create and run tunel on $REMOTE_HOST_NAME"
echo "#################"
SCRYPT="/root/bin/redirect_port_from_backuppc.sh"
echo "mkdir -p /root/bin"
echo "cat > $SCRYPT << _EOF_ "
echo "#!/usr/bin/env bash
exec &> >(while read line; do logger -t \"\\\$0\" -i \"\\\$line\"; done)

while true
do
/usr/bin/ssh -NR 127.0.0.1:$PORT:127.0.0.1:873 -i /root/.ssh/id_rsa_backuppc -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ServerAliveInterval=300 -p 6667 -l $REMOTE_HOST_NAME 217.17.45.189
sleep 60
done
"
echo "_EOF_"
echo "chmod a+x $SCRYPT"
echo "####"
echo "# tunell start "
echo "####"
echo "# to crontab "
echo "( crontab -l ; echo \"#Start tunell ssh to backuppc \"; echo \"@reboot /root/bin/redirect_port_from_backuppc.sh &\" ) | crontab -"
echo "# first run: "
echo "nohup /root/bin/redirect_port_from_backuppc.sh &"
palza


echo "##################"
echo "# rsync konfiguration on $REMOTE_HOST_NAME "
echo "#################"
PRE_BACKUP="/root/bin/pre_backup.sh"
POST_BACKUP="/root/bin/post_backup.sh"
echo "cat > /etc/rsyncd.conf << _EOF_"
echo "timeout = 600
[backup]
path = $BACKUP_DIR
uid = 0
gid = 0
max connections = 1
comment = backap
auth users = backuppc
secrets file = /etc/rsyncd.secrets
exclude = $EXCLUDE
read only = yes
pre-xfer exec = $PRE_BACKUP
post-xfer exec = $POST_BACKUP
_EOF_
"
echo "cat > /etc/rsyncd.secrets << _EOF_"
echo "backuppc:$RSYND_PASSWORD
_EOF_
"
echo "chmod og-rw /etc/rsyncd.secrets "
palza


echo "##################"
echo "# pre and post backup on $REMOTE_HOST_NAME "
echo "#################"
echo "####"
echo "# file $PRE_BACKUP"
echo "####"
echo "cat > $PRE_BACKUP << _EOF_"
echo "#!/usr/bin/env bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
exec &> >(while read line; do logger -t \"\\\$0\" -i \"\\\$line\"; done)
set -x
"

if [ "$USE_LVN_SNAPSHOT" == "YES" ] ;then
echo "
VG='$VG'
LV='$LV'
MIRROR='rootmirror'

mkdir -p /mnt/\\\$MIRROR/backup

lvcreate -n \\\$MIRROR -s -L 3G \\\$VG/\\\$LV
mount \\\$VG/\\\$MIRROR /mnt/\\\$MIRROR/backup

cp -a /boot/* /mnt/\\\$MIRROR/backup/boot/
"
fi
echo "_EOF_

"
echo "chmod a+x $PRE_BACKUP"

echo "####"
echo "# file $POST_BACKUP "
echo "####"
echo "cat > $POST_BACKUP << _EOF_"
echo "#!/usr/bin/env bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
exec &> >(while read line; do logger -t \"\\\$0\" -i \"\\\$line\"; done)
set -x
"

if [ "$USE_LVN_SNAPSHOT" == "YES" ] ;then
echo "
VG='$VG'
LV='$LV'
MIRROR='rootmirror'

umount /mnt/\\\$MIRROR/backup
lvremove -f \\\$VG/\\\$MIRROR
"
fi
echo "
_EOF_

"

echo "chmod a+x $POST_BACKUP"

if [ "$USE_LVN_SNAPSHOT" == "YES" ] ;then
echo "mkdir -p /mnt/rootmirror"
fi
palza

echo "####"
echo "# start rsyncd on $REMOTE_HOST_NAME "
echo "####"
RSYNC="$RSYNC_LOCATION --daemon --config /etc/rsyncd.conf --bwlimit=$SPEED --address=127.0.0.1"
echo "#to cronab"
echo "( crontab -l ; echo \"#Odpalenie rsyncd przys starcie \"; echo \"@reboot $RSYNC \" ) | crontab -"
echo "# start rsyncd "
echo "$RSYNC"
palza

echo "####"
echo "# rsync test on backuppc - list all files that will be backuped. "
echo "####"
echo "RSYNC_PASSWORD=$RSYND_PASSWORD rsync -a -v -n --port=$PORT backuppc@127.0.0.1::backup /tmp/jakistest"





Wolodyj


Username:Anonymous
Title:
Your Comment:

Posting Format:

 

Inappropriate comments will be removed.

Some help on entry formatting is available

User Login

Username:

Password:

[ Advanced Login ]

Register Account

Quick Site Search