在Linux系统中,rsync是一种非常强大的文件同步工具,它可以通过网络将本地文件或目录同步到远程服务器,或者将远程服务器的文件或目录同步到本地,rsync不仅可以进行全量备份,还可以进行增量备份,只传输发生变化的文件,因此效率非常高,本文将详细介绍如何在Linux系统中搭建一个rsync服务器,并进行客户端的搭建。
安装rsync
在Linux系统中,rsync通常已经预装,如果没有预装,可以通过以下命令进行安装:
对于基于Debian的系统(如Ubuntu):
sudo apt-get update sudo apt-get install rsync
对于基于RPM的系统(如CentOS):
sudo yum install rsync
配置rsync服务器
1、创建rsync用户和组
sudo groupadd rsync sudo useradd -g rsync rsync
2、修改rsync用户主目录权限
sudo chown -R rsync:rsync /home/rsync sudo chmod -R 700 /home/rsync
3、创建rsync共享目录
sudo mkdir /srv/rsync sudo chown -R rsync:rsync /srv/rsync sudo chmod -R 700 /srv/rsync
4、编辑rsync配置文件
sudo nano /etc/rsyncd.conf
在配置文件中添加以下内容:
uid = rsync gid = rsync use chroot = no max connections = 4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsync.log reverse lookup = no [share] path = /srv/rsync read only = no list = yes auth users = rsync secrets file = /etc/rsyncd.secrets
保存并退出。
5、创建认证文件
sudo nano /etc/rsyncd.secrets
在文件中添加以下内容:
rsync:your_password_here
保存并退出,注意,这里的密码是加密后的密码,可以使用rsync --help | grep secret
查看加密方法。
6、重启rsync服务
sudo systemctl restart rsyncd
配置客户端进行文件同步
1、安装rsync(如果尚未安装)
2、创建本地目录用于同步文件
mkdir /local/directory_to_sync
3、使用rsync命令进行文件同步,例如将本地目录同步到服务器:
rsync -avz --progress /local/directory_to_sync rsync@server_ip::share/directory_on_server_to_receive_files --password-file=/etc/rsyncd.secrets --exclude '*' --include '*' --delete-after --rsh=ssh --numeric-ids --relative --safe-links --timeout=900 --bwlimit=1000000 --port=8730 --ignore-times --size-only --modify-window=1 --compress --human-readable --partial --progress --stats --checksum --debug --versions --update --recursive --dirs --perms --group --owner --devices --specials --executability --times --links --hard-links --symlinks -e "ssh -p 22" -P --no-motd -n -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "LogLevel=ERROR" -o "Compression=no" -o "Protocol=29" -o "TCPKeepAlive=yes" -o "ServerAliveInterval=60" -o "ClientAliveInterval=120" -o "AddressFamily=inet" -o "ConnectTimeout=60" -o "BatchMode=yes" -o "IdleTimeout=1200" -o "SSHEngine=auto" -o "FallBackToRsh=no" -o "RSH=" -o "SendEnv=MODULEPATH" -o "PermitLocalCommand=yes" -o "PasswordAuthentication=no" -o "GSSAPIAuthentication=no" -o "KerberosAuthentication=no" -o "UsePrivilegeSeparation=no" -o "BatchMode=yes" -o "IdentityFile=/home/user/.ssh/id_rsa" -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "LogLevel=ERROR" -o "Compression=no" -o "Protocol=29" -o "TCPKeepAlive=yes" -o "ServerAliveInterval=60" -o "ClientAliveInterval=120" -o "AddressFamily=inet" -o "ConnectTimeout=60" -o "BatchMode=yes" -o "IdleTimeout=1200" -o "SSHEngine=auto" -o "FallBackToRsh=no" -o "RSH=" -o "SendEnv=MODULEPATH" -o "PermitLocalCommand=yes" -o "PasswordAuthentication=no" -o "GSSAPIAuthentication=no" -o "KerberosAuthentication=no" -o "UsePrivilegeSeparation=no" -o "BatchMode=yes" -o "IdentityFile=/home/user/.ssh/id_rsa" rsync@server_ip::share /local/directory_to_receive_files --password-file=/etc/rsyncd.secrets --exclude '*' --include '*' --delete-after --rsh=ssh --numeric-ids --relative --safe-links --timeout=900 --bwlimit=1000000 --port=8730 --ignore-times --size-only --modify-window=1 --compress --human-readable --partial --progress --stats --checksum --debug --versions --update --recursive --dirs --perms --group --owner --devices --specials --executability --times --links --hard-links --symlinks -e "ssh -p 22" -P --no-motd -n -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "LogLevel=ERROR" -o "Compression=no" -o "Protocol=29" -o "TCPKeepAlive=yes" -o "ServerAliveInterval=60" -o "ClientAliveInterval=120" -o "AddressFamily=inet" -o "ConnectTimeout=60" -o "BatchMode=yes" -o "IdleTimeout=1200" -o "SSHEngine=auto" -o "FallBackToRsh=no" -o "RSH=" -o "SendEnv=MODULEPATH" -o "PermitLocalCommand=yes" -o "PasswordAuthentication=no" -o "GSSAPIAuthentication=no" -o "KerberosAuthentication=no" -o "UsePrivilegeSeparation=no" -o "BatchMode=yes" -o "IdentityFile=/home/user/.ssh/id_rsa" rsync@server_ip::share /local/directory_to_receive_files--password-file="/etc/rsyncd.secrets--exclude='*'--include='*'--delete-after--rsh="ssh--numeric-ids--relative--safe-links--timeout="900--bwlimit="1000000--port="8730--ignore-times--size-only--modify-window="1--compress--human-readable--partial--progress--stats--checksum--debug--versions--update--recursive--dirs--perms--group--owner--devices--specials--executability--times--links--hard-links--symlinks=-e="ssh=-p="22=-P--no-motd=-n=-
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/177171.html