php写一个脚本,实现在a服务器定时备份文件到b服务器,并且b服务器定时删除大于10天的备份文件
时间: 2024-03-01 19:55:36 浏览: 66
好的,以下是一个用 PHP 编写的脚本,可以实现在 A 服务器定时备份文件到 B 服务器,并且 B 服务器定时删除大于 10 天的备份文件:
```php
<?php
// A 服务器信息
$a_host = 'A 服务器地址';
$a_user = 'A 服务器用户名';
$a_pass = 'A 服务器密码';
$a_dir = 'A 服务器备份目录';
// B 服务器信息
$b_host = 'B 服务器地址';
$b_user = 'B 服务器用户名';
$b_pass = 'B 服务器密码';
$b_dir = 'B 服务器备份存储目录';
// 连接 A 服务器
$a_conn = ftp_connect($a_host);
ftp_login($a_conn, $a_user, $a_pass);
ftp_pasv($a_conn, true);
// 连接 B 服务器
$b_conn = ftp_connect($b_host);
ftp_login($b_conn, $b_user, $b_pass);
ftp_pasv($b_conn, true);
// 获取 A 服务器备份文件列表
$files = ftp_nlist($a_conn, $a_dir);
// 遍历备份文件列表
foreach ($files as $file) {
// 下载备份文件到本地
$local_file = basename($file);
ftp_get($a_conn, $local_file, $file, FTP_BINARY);
// 上传备份文件到 B 服务器
ftp_put($b_conn, $b_dir . '/' . $local_file, $local_file, FTP_BINARY);
// 删除本地备份文件
unlink($local_file);
}
// 关闭连接
ftp_close($a_conn);
ftp_close($b_conn);
echo '备份完成';
// 连接 B 服务器
$b_conn = ssh2_connect($b_host, 22);
ssh2_auth_password($b_conn, $b_user, $b_pass);
// 执行删除命令
$cmd = 'find ' . $b_dir . ' -type f -mtime +10 -exec rm {} \;';
ssh2_exec($b_conn, $cmd);
// 关闭连接
ssh2_exec($b_conn, 'exit');
ssh2_disconnect($b_conn);
echo '删除完成';
```
这个脚本首先使用 FTP 协议连接 A 服务器和 B 服务器,遍历 A 服务器备份目录中的文件列表,将每个备份文件下载到本地,然后上传到 B 服务器备份存储目录中。最后关闭连接并输出备份完成信息。
接着,使用 SSH 协议连接 B 服务器,并执行一个删除命令,删除 B 服务器备份存储目录中大于 10 天的备份文件。最后关闭连接并输出删除完成信息。
你可以根据需要修改服务器信息、备份目录和备份存储目录等参数,以及删除命令的执行时间。注意,需要开启 B 服务器的 SSH 服务。
阅读全文