aarch64 rsync安装脚本(python3)

服务端安装

import os
import subprocess

def install(user, group, pwd):
    curpath = os.path.abspath(os.path.dirname(__file__))
    subprocess.call("tar -xzvf rsync-3.0.6.tar.gz", shell=True, cwd=curpath)
    rsync_path = os.path.join(curpath, "rsync-3.0.6")
    subprocess.call("./configure --prefix=/usr/local/rsync --disable-ipv6 --build=arm", shell=True, cwd=rsync_path)
    subprocess.call("make && make install", shell=True, cwd=rsync_path)
    subprocess.call("ln -s /usr/local/rsync/bin/rsync /usr/local/bin/rsync", shell=True, cwd=rsync_path)
    subprocess.call("rm -fr /usr/local/rsync/rsyncd.conf", shell=True, cwd=rsync_path)
    subprocess.call("cp {} /usr/local/rsync/".format(os.path.join(curpath, "rsyncd.conf")), shell=True, cwd=rsync_path)
    subprocess.call("sed -i 's/uid = root/uid = {}/' /usr/local/rsync/rsyncd.conf".format(user), shell=True, cwd=rsync_path)
    subprocess.call("sed -i 's/gid = root/gid = {}/' /usr/local/rsync/rsyncd.conf".format(group), shell=True, cwd=rsync_path)
    subprocess.call("sed -i 's/auth users root/auth users {}/' /usr/local/rsync/rsyncd.conf".format(user), shell=True, cwd=rsync_path)
    subprocess.call("rm -fr /usr/local/rsync/rsyncd.motd", shell=True, cwd=rsync_path)
    subprocess.call("touch /usr/local/rsync/rsyncd.motd", shell=True, cwd=rsync_path)
    subprocess.call("rm -fr /usr/local/rsync/rsyncd.secrets", shell=True, cwd=rsync_path)
    subprocess.call("echo {}:{} > /usr/local/rsync/rsyncd.secrets".format(user, pwd), shell=True, cwd=rsync_path)
    subprocess.call("chmod 600 /usr/local/rsync/rsyncd.secrets", shell=True, cwd=rsync_path)
    subprocess.call("chown {}:{} /usr/local/rsync/rsyncd.secrets".format(group, user), shell=True, cwd=rsync_path)

    return subprocess.call("/usr/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf", shell=True) == 0       
rsyncd.conf
# https://download.samba.org/pub/rsync/rsyncd.conf.5
pid file = /var/run/rsyncd.pid
port = 873
uid = root
gid = root
use chroot = no
max connections = 100
timeout 600
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
secrets file = /usr/local/rsync/rsyncd.secrets 
motd file = /usr/local/rsync/rsyncd.motd
 
[test]
path = /data/files/
ignore errors
read only = false
write only = false
list = false
hosts allow = *
#hosts deny = 0.0.0.0/32
auth users root

客户端安装

import os
import subprocess

if __name__ == "__main__":    
    curpath = os.path.abspath(os.path.dirname(__file__))
    if subprocess.getstatusoutput("which rsync") == 1:
        subprocess.call("tar -xzvf rsync-3.0.6.tar.gz", shell=True, cwd=curpath)
        rsync_path = os.path.join(curpath, "rsync-3.0.6")
        subprocess.call("./configure --prefix=/usr/local/rsync --disable-ipv6 --build=arm", shell=True, cwd=rsync_path)
        subprocess.call("make && make install", shell=True, cwd=rsync_path)
        subprocess.call("ln -s /usr/local/rsync/bin/rsync /usr/local/bin/rsync", shell=True, cwd=rsync_path)

    user = input("请输入rsync服务访问用户名: ")
    passwd = input("请输入rsync服务访问密码: ")
    rsync_srv_ip = input("请输入rsync服务ip: ")
    rsync_srv_port = 873
    rsync_path = "/usr/local/rsync/client"
    subprocess.call("mkdir -p {}".format(rsync_path), shell=True)
    subprocess.call("echo {} >{}/rsyncd.secrets".format(passwd, rsync_path), shell=True)
    subprocess.call("chmod 600 {}/rsyncd.secrets".format(rsync_path), shell=True)
    subprocess.call("mkdir -p /data/files", shell=True)

    rsync_cron_path = "{}/cron".format(rsync_path)
    subprocess.call("mkdir -p {}".format(rsync_cron_path), shell=True)
    subprocess.call("rm -fr {}/rsync_client.sh".format(rsync_cron_path), cwd=curpath, shell=True)
    subprocess.call("cp rsync_client.sh {}/".format(rsync_cron_path), cwd=curpath, shell=True)
    subprocess.call("sed -i 's/root@localhost/{}/' {}/rsync_client.sh".format("{}@{}".format(user, rsync_srv_ip), rsync_cron_path), shell=True)
    subprocess.call("chmod +x {}/rsync_client.sh".format(rsync_cron_path), shell=True)
    subprocess.call('crontab  -l|grep -v  "{}"|crontab -'.format("rsync_client.sh"), shell=True)
    subprocess.call('(echo "* * * * * {}/rsync_client.sh >>/dev/null 2>&1" ; crontab -l )| crontab -'.format(rsync_cron_path), shell=True)

rsync_client.sh
#!/bin/sh
rsync -vzrtopg  --progress --port=873 root@localhost::test /data/files/ --password-file=/usr/local/rsync/rsyncd.secrets
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值