Python rsync 服务器之间文件夹同步脚本
来源:互联网 发布:高斯滤波算法流程图 编辑:程序博客网 时间:2024/05/16 19:07
About rsync:https://download.samba.org/pub/rsync/rsync.html
配置两台服务器之间ssh-key后,可以实现自动化无需手动输入密码,脚本如下:
import argparseimport datetimefrom functools import partialimport multiprocessing as mpimport osimport paramiko as pmkimport timedef check_ssh(host, user, port, passwd, dest_path): ssh_client = pmk.SSHClient() ssh_client.load_system_host_keys() ssh_client.set_missing_host_key_policy(pmk.AutoAddPolicy()) try: ssh_client.connect(host, username=user, port=port, timeout=10, password=passwd) ssh_client.exec_command('mkdir ' + os.path.join(dest_path, 'data')) except BaseException as e: print 'failed to connect to host: %r: %r' % (host, e) return False else: return Truedef select_from_file(file_path): file_list = [] if os.path.exists(file_path): path_dir = os.listdir(file_path) for all_dir in path_dir: file_list.append(os.path.join('%s' % all_dir)) return file_listdef sync_file(file_name, remote_host, remote_user, remote_port, src_path, dest_path): sync_cmd = "rsync -azrvhP --progress -e 'ssh -p " + str(remote_port) + "' --skip-compress=gz/zip/ " + \ file_name + " " + remote_user + "@" + remote_host + ":" + os.path.join(dest_path,'data') print sync_cmd os.chdir(src_path) os.system(sync_cmd)if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-w', '--workers', dest='workers', type=int, default=12) parser.add_argument('-H', '--host', dest='host', type=str, default='192.168.254.156') parser.add_argument('-u', '--user', dest='user', type=str, default='shubao') parser.add_argument('-p', '--password', dest='password', type=str, default='123456') parser.add_argument('-P', '--port', dest='port', type=int, default=22) parser.add_argument('-r', '--remotepath', dest='remotepath', type=str, default='/home/shubao/') parser.add_argument('-s', '--srcpath', dest='srcpath', type=str, default='/home/Jesse/data') args = parser.parse_args() if not check_ssh(args.host, args.user, args.port, args.password, args.remotepath): print 'SSH connect faild!' exit(-1) pool = mp.Pool(processes=args.workers) try: while True: print "New check start at %s..." % str(datetime.datetime.now()) file_list_ = select_from_file(args.srcpath) print "File_list: " print file_list_ p_work = partial(sync_file, remote_host=args.host, remote_user=args.user, remote_port=args.port, src_path=args.srcpath, dest_path=args.remotepath) pool.map(p_work, file_list_) time.sleep(10) finally: pool.terminate() pool.join()
0 0
- Python rsync 服务器之间文件夹同步脚本
- inotify+ rsync window同步linux服务器文件夹
- 利用rsync搭建服务器之间文件同步
- LINUX服务器之间用Rsync同步数据
- Ubuntu服务器之间进行Sersync+Rsync同步
- rsync多个服务器之间同步文件
- Ubuntu服务器之间进行Sersync+Rsync同步
- Rsync实现文件夹同步
- 用rsync同步文件夹
- Python利用rsync自动同步服务器与本地文件同步
- 使用rsync进行CentOS服务器之间的目录同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- linux rsync 不同服务器之间的文件备份同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- MS第二题解题思路
- 全栈工程师-什么触动你成为全栈工程师-001
- Android 不解压直接读取zip包
- 每日三题-Day2-C(HDU 1087 Super Jumping! Jumping! Jumping! 最大上升子序列和)
- Error:Module 'app': platform 'Google Inc.:Google APIs:22' not found.
- Python rsync 服务器之间文件夹同步脚本
- HDU 1254 推箱子(双BFS)
- 广州图普网络科技2017校园招聘简章
- Python iterator和iterable
- C语言函数指针
- 自己Java写的接口给自己的angularjs调用跨域问题
- 利用angulaJs实现Multipart/form-data
- Android Statbility
- 深入浅出理解视频编码H264结构