win系统与linux系统之间文件备份

简介:

需求:

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

wKiom1ei4HrQ1P6TAACK-BsdpEA214.jpg-wh_50

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 (附件中可以下载 或 https://www.itefix.net/cwrsync)

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

wKiom1ei5KiShtU_AACkjv9paVw334.jpg-wh_50

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

wKioL1ei6xPA4EIzAAHf5Fytt0A090.jpg-wh_50

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

wKiom1ei7IGRaWoRAAAqelDTYik668.jpg-wh_50

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



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

目录
打赏
0
0
0
0
344
分享
相关文章
|
18天前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
54 23
Linux系统之whereis命令的基本使用
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
66 34
|
9天前
|
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
35 14
|
4天前
|
Linux 将所有文件和目录名重命名为小写
Linux 将所有文件和目录名重命名为小写
20 3
|
2月前
|
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
263 78
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
131 23
|
2月前
|
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
320 14
|
2月前
|
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
179 6
|
2月前
|
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
507 6
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
126 13
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等