rsync如何同步单个文件到服务器上,使用rsync命令将备份同步到远程服务器的四个简单步骤...
Posted 15835993913
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync如何同步单个文件到服务器上,使用rsync命令将备份同步到远程服务器的四个简单步骤...相关的知识,希望对你有一定的参考价值。
使用rsync命令进行远程备份的Bash脚本
定期备份重要数据是一个好习惯。
它使您可以在需要时还原它。
如果系统崩溃,即使您有备份,也将无法根据需要还原备份。
那么,克服此问题的最佳解决方案是什么?
在这种情况下,远程备份是一个更好的解决方案。
Rsync是执行远程备份的出色Linux命令。
什么是rsync命令?
Rsync代表远程同步。Rsync是一种快速且用途广泛的文件复制工具。它用于快速和增量文件传输。Rsync被广泛用于备份和镜像目的。
rsync通常用于在两个不同系统或本地目录之间同步文件和目录。
它使用增量传输算法,该算法通过仅将已更改的文件传输到自上次备份以来已更改的目标,来减少通过网络发送的数据量。
它提供了广泛的选项,可控制其行为的各个方面,并允许非常灵活地指定要复制的文件集。
步骤1:使用tar命令创建数据的本地备份
首先,您需要为重要数据创建本地备份。
步骤2:设置无密码SSH身份验证
由于您计划将备份移至远程(非现场)服务器,因此必须设置无密码ssh身份验证以自动执行此任务。
否则,您需要手动执行此操作,因为每次运行脚本时,远程服务器都会要求输入密码。
步骤3:使用rsync命令为远程备份创建Bash脚本
在本教程中,我们包含了五个脚本。每个脚本的编写目的均不同,并根据需要选择相应的脚本。
Bash Script-1:使用rsync命令将备份移动到具有标准SSH端口的远程服务器
如果您在其上使用标准ssh端口,请使用以下bash脚本将备份移至远程服务器。
# /opt/scripts/remote-backup-1.sh
#!/bin/bash
#Remote Server IP
rserver=192.168.1.5
#Local backup location
lbackuploc=/home/daygeek/Downloads/test/
#Remote backup location
rbackuploc=/home/daygeek/site
#rsync command with standard port
rsync -avz -e ssh $lbackuploc $rserver:$rbackuploc
#To delete files older than 10 days
find $rbackuploc/* -mtime +10 -exec rm ;
Bash Script-2:使用rsync命令将备份移动到具有非标准SSH端口的远程服务器
如果使用非标准ssh端口,请使用以下bash脚本将备份移至远程服务器。
# /opt/scripts/remote-backup-2.sh
#!/bin/bash
#Remote Server IP
rserver=192.168.1.5
#SSH Non-Stardard port number
snsport=2200
#Local backup location
lbackuploc=/home/daygeek/Downloads/test/
#Remote backup location
rbackuploc=/home/daygeek/site
#rsync command with non-standard port
rsync -avz -e "ssh -p $snsport" $lbackuploc $rserver:$rbackuploc
#To delete files older than 10 days
find $rbackuploc/* -mtime +10 -exec rm ;
Bash Script-3:使用rsync命令通过标准SSH端口将备份移至多个远程服务器
如果您在其上使用标准ssh端口,请使用以下bash脚本将备份移至多个远程服务器。
# /opt/scripts/remote-backup-3.sh
#!/bin/bash
#Local backup location
lbackuploc=/home/daygeek/Downloads/test/
#Remote backup location
rbackuploc=/home/daygeek/site
for rserver in 192.168.1.5 192.168.1.8
do
rsync -avz -e ssh $lbackuploc $rserver:$rbackuploc
find $rbackuploc/* -mtime +10 -exec rm ;
done
Bash Script-4:使用rsync命令将备份移动到具有非标准SSH端口的多个远程服务器
如果您使用备份工具上的非标准ssh端口,请使用以下bash脚本将其备份到多个远程服务器。
# /opt/scripts/remote-backup-4.sh
#!/bin/bash
#SSH Non-Stardard port number
snsport=2200
#Local backup location
lbackuploc=/home/daygeek/Downloads/test/
#Remote backup location
rbackuploc=/home/daygeek/site
for rserver in 192.168.1.5 192.168.1.8
do
rsync -avz -e "ssh -p $snsport" $lbackuploc $rserver:$rbackuploc
find $rbackuploc/* -mtime +10 -exec rm ;
done
Bash Script-5:使用rsync命令将备份移动到具有标准和非标准SSH端口的多个远程服务器
使用以下bash脚本将备份移动到多个远程服务器,而不管ssh端口如何。
# /opt/scripts/remote-backup-5.sh
#!/bin/bash
#SSH Non-Stardard port number
snsport=2200
#Local backup location
lbackuploc=/home/daygeek/Downloads/test/
#Remote backup location
rbackuploc=/home/daygeek/site
for rserver in 192.168.1.5 192.168.1.8
do
ssport=$(nmap -Pn $rserver | grep -w ssh | awk 'print $1' | sed "s//tcp//")
if [ "$ssport" == "22" ]
then
echo "$rserver"
rsync -avz -e ssh $lbackuploc $rserver:$rbackuploc
find $rbackuploc/* -mtime +10 -exec rm ;
else
echo "$rserver"
rsync -avz -e "ssh -p $snsport" $lbackuploc $rserver:$rbackuploc
find $rbackuploc/* -mtime +10 -exec rm ;
fi
done
设置文件的可执行权限remote-backup-5.sh。
# chmod +x remote-backup-5.sh
最后运行脚本以实现此目的。
# sh remote-backup-5.sh
192.168.1.5
sending incremental file list
./
wordpress-5.2.zip
sent 11,774,912 bytes received 38 bytes 7,849,966.67 bytes/sec
total size is 12,114,587 speedup is 1.03
192.168.1.8
sending incremental file list
./
wordpress-5.2.zip
sent 11,774,905 bytes received 41 bytes 7,849,964.00 bytes/sec
total size is 12,114,587 speedup is 1.03
如果要确保备份状态,请使用以下bash脚本。
# /opt/scripts/list-remote-backup.sh
#!/bin/bash
#User Name
username=daygeek
#SSH Non-Stardard port number
snsport=2200
#Remote backup location
rbackuploc=/home/daygeek/site
for rserver in 192.168.1.5 192.168.1.8
do
ssport=$(nmap -Pn $rserver | grep -w ssh | awk 'print $1' | sed "s//tcp//")
if [ "$ssport" == "22" ]
then
echo "$rserver"
echo "-----------"
ssh $username@$rserver "ls -lh $rbackuploc"
else
echo "$rserver"
echo "-----------"
ssh $username@$rserver -p "$snsport" "ls -lh $rbackuploc"
fi
done
运行脚本以列出同步的备份文件。
# sh list-remote-backup.sh
192.168.1.5
-----------
total 12M
-rw-r--r-- 1 daygeek daygeek 12M May 20 02:42 wordpress-5.2.zip
192.168.1.8
-----------
total 12M
-rw-r--r--. 1 daygeek daygeek 12M May 19 14:12 wordpress-5.2.zip
步骤4:使用crontab自动执行备份
要完全自动化,最后将脚本添加到crontab。
使用cronjob安排您方便的时间进行工作。我添加了一个cron作业,每天早上8点运行脚本。
0 8 * * * /opt/scripts/remote-backup-5.sh
以上是关于rsync如何同步单个文件到服务器上,使用rsync命令将备份同步到远程服务器的四个简单步骤...的主要内容,如果未能解决你的问题,请参考以下文章