python备份远程FTP脚本

自己写的一个Linux上使用python备份远程FTP脚本,编写此脚本的初衷是为了方便一些使用虚拟主机的朋友,因为许多虚拟主机商不提供备份服务,导致文件丢失的情况时有发生,因此就有了这个脚本。

系统需要安装fuse-curlftpfs、zlib、zlib-devel三个软件包,其中fuse-curlftpfs包不好安装,得先安装个第三方的yum源,才可以通过yum的方式安装之。

原理比较简单,即是python调用shell命令把远程FTP服务器挂载至本地,再打包压缩实现备份,最后解除挂载。备份以后的文件名会包含了备份的日期,同时会删除5天前备份的文件,配合crontab使用,可以实现定期备份FTP服务器上的文件。

如果是在VPS上使用,请确保VPS是不是基于Openvz虚拟化技术的,因为Openvz会限制对fuse的使用,无法实现远程挂载。Xen,KVM可以正常使用。

编写脚本期间还得到了zhiwei同学的帮助,在此提出感谢。脚本具备扩展性,可以备份多个FTP服务器上的目录。如果需要备份多个FTP,把脚本最后4行复制一遍即可。

使用方法: (more…)

Read More

python读取系统信息

python读取系统信息的一些方法

最主要是的platform模块:

>>> import platform
>>> platform.version()
'#1 SMP Fri Feb 22 00:31:26 UTC 2013'
>>> platform.platform()
'Linux-2.6.32-358.el6.x86_64-x86_64-with-centos-6.4-Final'
>>> platform.system()
'Linux'
>>> platform.machine()
'x86_64'
>>> platform.python_build()
('r266:84292', 'Feb 22 2013 00:00:18')
>>> platform.python_version()
'2.6.6'
>>> platform.release()
'2.6.32-358.el6.x86_64'
>>> platform.uname()
('Linux', 'localhost.localdomain', '2.6.32-358.el6.x86_64', '#1 SMP Fri Feb 22 00:31:26 UTC 2013', 'x86_64', 'x86_64')
>>> platform.architecture()
('64bit', 'ELF')
在windows上,专门还有个platform.win32_ver() 可用

(more…)

Read More

公布一个奇葩VPS:dream.jp/smartvps.cn

dream.jp/smartvps.cn好不好?dream.jp/smartvps.cn垃圾,dream.jp/smartvps.cn骗子。好了,开头先做一段SEO。现在开始讲述正题。

一提到日本,可能心里都会冒出几个感觉:友善,亲和,文明,礼貌。不知道从什么时候起,开始关注日本的VPS了,心里总有个感觉,再不济也是亚洲线路,速度也比美国的快吧

那天不知道怎么就逛到http://smartvps.cn这家了,查了一下,居然还是家大公司DTI旗下的产品,看来不用担心跑路了。又看了下价格,512M内存的日本VPS只要490日元(折合人民币40元不到),于是立即下手。开通还挺快。不到5分钟就开通了。

开通以后当然是万分欣喜的各种测试了,首先是看了看CPU,不看不要紧,一看顿时就闪瞎了我的眼!
垃圾的smartvps.cn (more…)

Read More

Linux挂载ftp服务器

Linux挂载ftp服务器,需要用到一个名为fuse-curlftpfs的包。正常情况下无法通过yum的方式获取此包,因此需要先安装DAG repository

Centos5 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
Centos5 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
Centos6 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Centos6 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm

然后是安装下载的rpm包

rpm -ivh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm

然后就可以通过yum的方式安装fuse-curlftpfs了

yum install fuse-curlftpfs -y

在Centos6上执行此命令,可能会遇到 Requires: libcurl.so.3 的错误,解决方法:编辑 /etc/yum.repos.d/rpmforge.repo 文件,把 [rpmforge-extras] 项打开,再执行 yum clean all 即可。 (more…)

Read More

python基础知识3:字典

字典使用大括号{ }来表示
字典中的“键”和“值”存在对应的映射关系,“键” 是唯一的,“值”并不唯一

1,字典的创建

>>> c={ }  #第1种创建方法
>>> c['name']='zhang3'
>>> c['age']=25

>>> items=[('name','zhang3'),('age',25)]  #第2种创建方法(使用列表/元组创建)
>>> d=dict(items)    #使用dict()函数创建元组

>>> e=dict(name='zhang3',age=25)  #第3种方法,通过参数创建
>>> e
{'age': 25, 'name': 'li4'}

>>> e={}.fromkeys(['name','age'],'unknown') #第4种方法,通过fromkeys()方法创建
>>> e
{'age': 'unknown', 'name': 'unknown'}  #所有“键”的值均为unknown

(more…)

Read More

解压rpm包

RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:

rpm2cpio xxx.rpm | cpio -div

例如:
[root@localhost ~]# rpm2cpio ipvsadm-1.26-1.src.rpm | cpio -div
ipvsadm-1.26.tar.gz
ipvsadm.spec
88 blocks

可以看到,压缩出来了一个.tar.gz格式的压缩包和一个xxx.spec格式的文件。
spec脚本用于指定软件基础信息,以及安装、卸载前后执行的脚本,对源码包解压、打补丁、编译,安装路径和文件等。关于spec脚本的详细说明请看RPM包rpmbuild SPEC文件深度说明。cpio命令的选项可以参考linux中cpio及rpm2cpio应用

Read More

python基础知识2:列表与元组

列表用大括号[]表示,元组用圆括号()表示
列表可以修改,字符串与元组不可修改
元组的分片还是元组,列表的分片还是列表

列表方法:

name=["zhang3","li4","wang5"]
name.append("gou6")  #添加项
name.remove("gou6")  #移除第一个匹配项,也可用del name[3]来移除
name.insert(3,"gou6") #插入项
name.index("gou6")  #找出第一个匹配项的位置
name.extend(["gou6","xuan7"])  #扩展
name.pop(0)  #返回列表的第一项值并从列表中删除之

(more…)

Read More