用php写一个备份脚本,并循环删除10天前的备份文件
时间: 2024-03-01 13:55:01 浏览: 23
好的,以下是一个用 PHP 编写的备份脚本,并循环删除10天前的备份文件:
```php
<?php
// 设置备份路径
$backupPath = '/path/to/backup';
// 设置要备份的目录
$sourcePath = '/path/to/source';
// 设置备份文件名前缀
$backupPrefix = 'backup_';
// 设置备份时间间隔(单位:秒)
$backupInterval = 3600;
// 设置保留备份天数
$keepDays = 10;
// 计算下一次备份的时间
$nextBackupTime = time() + $backupInterval;
// 执行备份
while (true) {
// 判断是否到达备份时间
if (time() >= $nextBackupTime) {
// 构建备份文件名
$backupFilename = $backupPrefix . date('Y-m-d_H-i-s') . '.tar.gz';
// 执行备份命令
$command = "tar -zcvf {$backupPath}/{$backupFilename} {$sourcePath}";
exec($command);
// 更新下一次备份的时间
$nextBackupTime = time() + $backupInterval;
// 删除指定天数前的备份文件
$keepTime = time() - $keepDays * 24 * 3600;
$backupFiles = glob($backupPath . '/' . $backupPrefix . '*.tar.gz');
foreach ($backupFiles as $file) {
if (filemtime($file) < $keepTime) {
unlink($file);
}
}
}
// 等待一段时间再检查备份时间
sleep(60);
}
```
说明:
1. 将 `$backupPath` 变量设置为备份文件存放的路径;
2. 将 `$sourcePath` 变量设置为需要备份的目录;
3. 将 `$backupPrefix` 变量设置为备份文件的前缀;
4. 将 `$backupInterval` 变量设置为备份时间间隔;
5. 将 `$keepDays` 变量设置为保留备份的天数;
6. 执行备份命令使用 `exec()` 函数;
7. 通过 `glob()` 函数获取备份文件列表;
8. 通过 `filemtime()` 函数获取文件最后修改时间;
9. 通过 `unlink()` 函数删除文件;
10. 通过 `sleep()` 函数等待一段时间再检查备份时间。
请注意,这个脚本只是一个示例,具体实现可能需要根据实际情况进行修改。