Python3使用SFTP方式备份网站根目录

https://memo.xuchen.wang/archives/74.html中,我用php写了个scp方式备份的脚本,今天顺手拿py使用sftp方式重写了一下,这个脚本具备可移植性,windows上也能跑。
该脚本运行需要paramiko这个第三方库,该库为py下的ssh2实现。

$ apt install python3-paramiko

$ pip install paramiko
#!/usr/bin/python3
import datetime
import tarfile
import os
import paramiko

# 获取日期
dateNow = datetime.datetime.now()
strToday = dateNow.strftime("%Y%m%d-%H%M%S")
# 拼接文件名
strFilename = "bak" + strToday + ".tar.gz"

# 需要备份的目录
strBakDirPath = '/srv/'
# 拼接得到备份文件存放的本地路径
strHomeDirPath = os.path.expanduser("~")
strLocalDirPath = strHomeDirPath + '/bak/';
if not os.path.exists(strLocalDirPath):
    os.makedirs(strLocalDirPath)
strLocalFilePath = strLocalDirPath + strFilename

# 远程存放路径
strRemoteFilePath = '/srv/gullo/' + strFilename
strUserName = ''
strPassWord = ''
strHost = ''
intPort = 22

# 遍历写入备份的压缩包
tarFileBak = tarfile.open(strLocalFilePath, "w:gz")
for root, dir, files in os.walk("/srv"):
    for file in files:
        fullPath = os.path.join(root, file)
        tarFileBak.add(fullPath)
tarFileBak.close()

# 建立sftp连接
tranInst = paramiko.Transport((strHost, intPort))
tranInst.connect(username=strUserName, password=strPassWord)
sftp = paramiko.SFTPClient.from_transport(tranInst)
sftp.put(strLocalFilePath, strRemoteFilePath)
tranInst.close()

此处评论已关闭