博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win系统与linux系统之间文件备份
阅读量:6649 次
发布时间:2019-06-25

本文共 2437 字,大约阅读时间需要 8 分钟。

需求:

    win主机上一个目录为备份目录,每天都会有增量文件,而我们要将这些增量文件全部copy到异地linux主机,如下图

win主机:

1、安装 rsync 客户端 (cwRsync)

2、同步脚本

linux主机:

1、安装rsync服务即可

linux配置:

linux的rsync的配置如下:

1
2
3
4
5
6
7
8
9
10
11
[tfsbackup]
path=
/data/tfsbackup
comment=tfsbackup
ignore errors = 
yes
read 
only=no
write only=no
hosts allow=*
hosts deny=*
list=
false
auth 
users
=
rsync
secrets 
file
=
/etc/rsyncd
.secrets

win配置:

1、安装 cwRsync (附件中可以下载 或 

将文件解压,变量配置即可,命令行测试通过即可。

2、同步脚本如下:脚本名暂定 tfs.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
"""
filename:tfs.py
function:检索指定目录下的1天内的文件,同步到服务器上。
"""
import 
os
import 
time
import 
glob
import 
subprocess
import 
os.path
 
expires 
= 
172800                 
#时间戳差值在2天,为了保险会校验两天内的增量文件
currentTime
=
int
(time.time())    
#获取当前时间戳
 
args
=
r
'-az'
remotehost 
=
r
'rsync@10.168.0.59::tfsbackup'
passwordFile
=
r
'--password-file=/cygdrive/c/cwrsync/rsyncd.secrets'
path 
= 
r
'E:\tfs\*'
comm
=
r
'c:\cwRsync\rsync.exe'
 
#以上为rsync最后的命令表现形式;/cygdrive/c/cwrsync/rsyncd.secrets表示c盘下的cwrsync/rsyncd.secrets文件。
 
srcpath
=
r
'/cygdrive/e/tfs/'        
#/cygdrive/e/表示windows系统的E盘,
 
filelist 
= 
glob.glob(path)  
#获取给定路径下所有文件名
 
#过滤出最近2天内的文件,
def 
checkFileTime(filename):
    
fileTime 
= 
os.stat(filename).st_mtime
    
if 
(currentTime 
- 
fileTime > expires):
        
pass
    
else
:
        
filename 
= 
os.path.basename(filename)
        
srcfile
=
srcpath
+
filename
        
rsyncFile(srcfile)
#rsync到远程主机上
def 
rsyncFile(
file
):
    
cmd 
= 
"%s %s %s %s %s" 
%
(comm,args,
file
,remotehost,passwordFile)
    
result 
= 
subprocess.call(cmd)
    
if 
result !
= 
0
:
        
print 
"rsync to " 
, remotehost , 
" fail ! !"
        
time.sleep(
10
)
    
else
:
        
print 
file 
"rsync to " 
, remotehost , 
"successful !"
 
for 
filename 
in 
filelist:
    
checkFileTime(filename)

因为备份的win主机上没有权限安装Python环境。所以转换到exe执行程序就可以了。

PyInstaller恰满足这个需求。本文PyInstaller的版本是2.0,支持Python2.7。下面讨论怎样安装,使用PyInstaller。

PyInstaller本身并不属于Python包。在安装 pyinstaller 之前假设你已经安装了python ,注意把python 环境变量配置好, 即 进入cmd后 输入 python 会进入 python shell.

pyinstaller安装:

1,下载pyinstaller并解压(可以去官网下载最新版)

1
C:\pyinstaller-2.0

2,安装最新版本的 pywin32-217.win32-py2.7.exe:

不然会出现错误Error: PyInstaller for Python 2.6+ on Windows needs pywin32.

3

1
2
C:\Users\xisuo>
cd 
C:\pyinstaller-2.0
C:\pyinstaller-2.0>python pyinstaller.py -w --onefile D:\py\tfs.py

上面的命令成功运行后tfs.py 会生成一个tfs文件夹。在这个文件夹下面会有一个名为dist的文件夹,此文件夹下面有转换好的tfs.exe。

当你执行文件tfs.exe即可rsync到远程主机上。做计划任务即可。

本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1834363

转载地址:http://deyto.baihongyu.com/

你可能感兴趣的文章
使用Python通过xlrd处理excel实战
查看>>
迅雷7.2.2.3188去广告优化版|组件可选+边下边看+限制上传速度+点亮VIP6图标
查看>>
6月6日
查看>>
consul 1.0 server cluster集群配置全解密
查看>>
MySQL修改字符集
查看>>
释放Ubuntu/Linux系统cache,增加可用内存空间
查看>>
从Maven到Gradle
查看>>
font-face跨域办法
查看>>
vim命令助记图
查看>>
Python 的 csv 模块
查看>>
NDK使用之HelloWorld
查看>>
DNS浅析-搭建一个简单的主从服务器
查看>>
Linux 64位下jdk1.6和Weblogic11安装
查看>>
基于ZooKeeper的分布式Session实现
查看>>
ELK 日志分析平台搭建
查看>>
Nginx yum源
查看>>
Linux分区类型EXT2、EXT3、EXT4详解
查看>>
MTR--linux网络诊断工具
查看>>
基于rgw的多媒体转换网关原型设计
查看>>
如何取消hibernate hbm2ddl.auto 自动创建外键
查看>>