太久没更新,写个脚本凑数
功能:备份远程gitlab主机,并将文件下载到本地,然后删除远程备份
#!/usr/bin/env python #coding=utf-8 #pip install paramiko import paramiko ssh_host = "ssh gitlab 主机地址" ssh_user = "账号" ssh_port = 端口 ssh_pass = "密码" gitlab_back_dir = "/data/tool/gitlab/data/backups" #gitlab远程备份路径,如果物理机rpm安装,默认/var/opt/gitlab/backups def back_gitlab(client): """ 备份服务器gitlab """ std_in,std_out,std_err = client.exec_command("gitlab-rake gitlab:backup:create RAILS_ENV=production",timeout=3600) for i in std_out.readlines(): print(str(i).split("\n")[0]) def get_all_backfile(client,file_list): """ 获取所有备份文件 """ std_in, std_out, std_err = client.exec_command("ls " + gitlab_back_dir, timeout=3600) for i in std_out.readlines(): file_list.append(gitlab_back_dir + "/" + str(i).split("\n")[0]) def delete_remote_back(client,file_list): """删除远程备份""" for file in file_list: std_in, std_out, std_err = client.exec_command("rm -f " + str(file), timeout=3600) print("删除文件{}成功".format(file)) if __name__ == "__main__": client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname=ssh_host, port=ssh_port, username=ssh_user, password=ssh_pass, timeout=30) sftp_cli = paramiko.Transport((ssh_host,ssh_port)) sftp_cli.connect(username=ssh_user,password=ssh_pass) sftp = paramiko.SFTPClient.from_transport(sftp_cli) back_gitlab(client) file_list = [] get_all_backfile(client,file_list) print(file_list) for file in file_list: print(str(file).split("/")[-1]) sftp.get(file, str(file).split("/")[-1]) delete_remote_back(client,file_list) sftp.close() client.close()
![](https://www.iyunw.cn/wp-content/uploads/2017/02/1_150707164216_1.jpg)
评论区