我想在我的服务器上为文件和文件夹创建一个备份脚本,我发现了这个:
# Name of the buckup file
$filename = 'BACKUP_' . date('Y.m.d') . '.tar.gz';
# Target path where to save the file
$targetPath = '/path/to/backup/';
# Directory to backup
$dir = "/path/to/files/";
# Execute the tar command and save file
system( "tar -pczf ".$targetPath ."".$filename." ".$dir );
哪个效果很好,然后我可以将URL传递给脚本和正确的标题并下载文件。
我的问题是我经常运行这个并且不想在服务器上保留备份。所以我试图找到一种创造性的方式来创建一个被删除的临时文件。问题是一些文件可能相当大,我无法知道文件何时完全下载。
答案 0 :(得分:2)
您可以在/ tmp中创建备份文件,然后使用:
# Name of the buckup file
$filename = 'BACKUP_' . date('Y.m.d') . '.tar.gz';
# Target path where to save the file
$targetPath = '/path/to/backup/';
# Directory to backup
$dir = "/path/to/files/";
# Execute the tar command and save file
system( "tar -pczf ".$targetPath ."".$filename." ".$dir );
readfile("{$targetPath}{$filename}"); // outputs file contents to a browser
unlink("{$targetPath}{$filename}"); // removes file from disk
阅读http://php.net/manual/ru/function.readfile.php了解详情。
PS 您也可以使用ZipArchive类(内置版)更灵活地创建自己的存档。
答案 1 :(得分:0)
在数据库中添加文件名/路径和创建的时间戳,编写一个cron作业以删除大于您想要保留它的时间。让它每小时运行30分钟。无论如何经常你认为是必要的。
至于是否已下载,请创建下载管理器。 / download / file / id,其中id可以是该表中的PK,只有在尚未下载的情况下才删除,除非它已经48小时,或者其他类似的东西。