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命令将备份同步到远程服务器的四个简单步骤...的主要内容,如果未能解决你的问题,请参考以下文章

rsync使用介绍

rsync的使用——远程服务器同步配置

linux rsync服务

云机器同步数据 - rsync

rsync

10.32/10.33rsync通过服务同步10.34linux系统日志10.35screen工具