删除旧的远程 FTP 文件夹

2024-01-22

我编写了一个 MySQL 数据库备份脚本,它将备份文件存储在远程 FTP 服务器中。它在根目录中创建一些以数据库名称命名的文件夹,然后在每个文件夹中创建一些以当前日期命名的文件夹(格式:yyyy-mm-dd),并在这些文件夹中上传以确切时间命名的备份文件。

我还需要删除旧的二级文件夹(按日期命名);我的意思是超过 4 天的文件夹。这是我遇到问题的部分。我尝试了一些使用 ftp_nlist 的代码,我可以用它列出文件夹,我还使用 ftp_mdtm 来获取创建日期并将其与到期日期进行比较。但结果并不好。这是我的代码:

...

$skip = array('.', '..', '.ftpquota', '.htaccess');
$expire_date = date('Y-m-d', strtotime('-4 days', time()));

$ff_list = ftp_nlist($con, $db_dir);
foreach($ff_list as $item)
{
    if(in_array($item, $skip))
    {
        continue;
    }
    $mod_time = ftp_mdtm($con, $item);
    if(strtotime($expire_date ) >= $mod_time)
    {
        ftp_rmdir($con, $item);
    }
}

...

请参加我需要删除旧文件夹及其所有内容,因此我需要合适的删除命令(我不知道 ftp_rmdir 是否正常工作)。


您使用了正确的命令ftp_rmdir

http://php.net/manual/en/function.ftp-rmdir.php http://php.net/manual/en/function.ftp-rmdir.php

但我敢打赌问题是这个函数,像 rmdir 一样,要求目录为空。

这是一个递归删除函数警告!未经测试!

//credentials
$host = "ftp server";
$user = "username";
$pass = "password";

//connect
$handle = @ftp_connect($host) or die("Could not connect to {$host}");

//login
@ftp_login($handle, $user, $pass) or die("Could not login to {$host}");

function recursiveDelete($directory){
    //try to delete
    if( !(@ftp_rmdir($handle, $directory) || @ftp_delete($handle, $directory)) ){
        //if the attempt to delete fails, get the file listing
        $filelist = @ftp_nlist($handle, $directory);

        //loop through the file list and recursively delete each file in the list
        foreach($filelist as $file){
            recursiveDelete($file);
        }

        //if the file list is empty, delete the directory we passed
        recursiveDelete($directory);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除旧的远程 FTP 文件夹 的相关文章

  • 在 Woocommerce 购物车中设置最小小计金额

    我正在尝试将最低订单金额设置为 25 美元 到目前为止 我找到了这段代码 如果未达到最低限度 它似乎可以阻止结账 但它使用的小计包含税费 我需要在总计中排除税费 add action woocommerce checkout process
  • postgreSQL 在 WAMP 上的集成

    我刚刚在 Windows 7 上安装了 postgreSQL 我正在尝试将 postgreSQL 与 WAMP 服务器集成 为此 我在 httpd conf 和 php ini 文件中进行了以下更改 1个加载模块c path to libp
  • 如何从字符串中删除所有数字?

    我想删除字符串 0 9 中的所有数字 我写了这段有效的代码 words preg replace 0 words remove numbers words preg replace 1 words remove numbers words
  • php 表单提交 - Q2

    我对这个虚拟问题感到抱歉 这是我的简单 PHP 表单 其中包含两个 SQL 表和 ADD 提交 按钮 我希望将人员从 Test1 转移到 Test2 很多事情都很好 只有提交按钮不起作用 因此 Test2 表没有反馈 Revised 现在提
  • 为什么 PHP 中不允许“传统”类型提示?

    刚刚发现类型提示 http php net manual en language oop5 typehinting phpPHP 中允许 但不适用于整数 字符串 布尔值或浮点数 为什么 PHP 不允许对整数 字符串等类型进行类型提示 从 P
  • 如何确定当前使用哪个网格选项

    我将 Bootstrap 3 用于使用 PHP 和 HTML 创建的网页 随着响应式网格和类的开启引导程序3您可以将多个类分配给一个 div 以根据当前屏幕尺寸定义不同的宽度 例如 div class col lg 3 col md 3 c
  • 如何在 WordPress 中按类别获取所有帖子

    我想在 WordPress 中按类别获取帖子 args array post type gt project postslist get posts args 0 gt WP Post 对象 ID gt 421 post author gt
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • CSS 无法从带有 php“includes”的相对路径工作

    文件夹结构 index php includes header html css style css 我的主项目文件夹中有 2 个子文件夹 一个是名为 includes 的文件夹 另一个名为 css 我有我的 index php主文件夹中的
  • PHP 错误警告:参数 1 应该是引用

    我 熟悉 PHP 我的朋友的网站因错误而崩溃 Warning Parameter 1 to Some function name expected to be a reference value given in public html i
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • phpinfo 说 php.ini 路径是 C:\Windows 但那里没有 php.ini

    我们正在尝试从 PHP5 切换到 PHP7 现在我们已经安装了 Apache 并且 PHP 可以运行了 然而 我们在php ini文件没有任何作用 Via phpinfo 我们意识到原因是Configuration File php ini
  • PHP 错误:“无法通过引用传递参数 2”

    我只是需要有关这个 PHP 错误的帮助 我不太明白 致命错误 无法在第 13 行 web stud openup inactivatesession php 中通过引用传递参数 2
  • wordpress - 像 stackoverflow 中那样内嵌 ajax 注释

    我有一个 WordPress 博客 希望为人们提供与 stackoverflow 中添加评论相同的用户体验 有很多评论 ajax 插件 但我找不到一个可以使用的插件 它允许您在主页上内联 进入并添加评论 而无需先深入到单独的单个帖子页面 任
  • 接口中的构造方法

    接口中的构造方法不好吗 为什么人们认为有人想要实例化接口 我们想要做的是强制实现者实现构造函数 就像其他接口方法一样 接口就像一个合同 假设我有一个接口 Queue 并且我想确保实现者创建一个带有一个参数的构造函数 该构造函数创建一个单例队
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28
  • 如何在数据列表 HTML PHP 中设置选择

    您好我想知道是否有一种方法可以在数据列表中设置选定的值 我想要这样的东西
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • 平滑滚动到顶部

    我已经搜索了几个小时了 但没有解决方案 我想要平滑滚动到页面顶部 我已经可以平滑滚动到页面中的单独锚点 js文件附加到我的网站 但我无法在顶部使用锚点 因为我使用的是来自免费托管网站的模板 该网站带有内置页面构建工具 不允许我在正文区域上方
  • 提供程序命名管道提供程序错误 40 无法打开与 SQL Server 错误 2 的连接 [重复]

    这个问题在这里已经有答案了 当我尝试连接到 SQL Server Management Studio 中的数据库时 出现以下错误 提供程序命名管道提供程序错误 40 无法打开到 SQL Server 的连接错误 在检查了几个关于SO的答案后
  • ELF 中的字符串表

    我得到一些符号 并得到一个 ELF 文件 的十六进制转储 我怎样才能知道这个符号出现在哪个部分 有什么区别 strtab and shstrtab 是否还有另一个符号字符串数组 当我获得符号名称表的索引时 它是 strtab or in s
  • SQL Azure SPLIT AT 后端进程和资源限制

    当发出 SPLIT AT 命令时 数据库被分成 2 个新的联合成员 这两个成员会坐在同一服务器上吗 它们具有相同数量的 I O CPU 资源吗 如果应用程序必须增长到 50 个成员 除了 SPLIT AT 命令之外还需要其他什么来扩展吗 这
  • Redis 在某些操作系统上将字符串保存为缓冲区,而不是其他操作系统上的缓冲区?

    我在 Ubuntu 11 10 上使用带有 Node 的 Redis 2 2 11 并且我正在保存一个字符串 但它作为缓冲区返回 id 1234 console log data data client hmset user id name
  • Heroku 无法访问 jetty-runner jar 文件

    我正在使用 jetty runner jar 将 Spring MVC 应用程序部署到 Heroku 但在部署中出现错误 Heroku 日志仅显示 Error unable to access jarfile target dependen
  • pyspark 将行转换为列

    我有一个数据框 需要将同一组的行转换为列 基本上以这些为中心 下面是我的 df Customer ID unit order John 123 00015 1 John 123 00016 2 John 345 00205 3 John 3
  • 当我使用 jQuery 选择页面上的任何文本时,如何显示对话框?

    我的网页充满了文字 让我们说像那个页面 我的意思不是 输入元素 我的意思是任何文本都是用 或 等标签 当我选择某些单词时 会显示弹出窗口或迷你窗口或对话框 其中包含一些选项 例如 链接到通过电子邮件发送所选文本或复制或打印 就像您在任何浏览
  • Java 中的自动语义角色标记 (ASRL)(使用 Java 中的 Frame net)

    我一直在寻找用Java创建ASRL分析的方法 不幸的是网络提供的支持很少 似乎所有其他SO问题都与 使用哪些工具 有关 但与 如何使用它们 无关 我想创建 最好是用java 类似这样的东西 http demo ark cs cmu edu
  • 通过 walrus := 运算符进行多次赋值?

    我尝试使用 walrus 运算符进行多次分配 并在 StackOverflow 上看到了一些问题 例如this https stackoverflow com questions 59226071 how to perform assign
  • UITextView lineHeightMultiple Clips 顶部,第一行,文本

    在 iOS 8 中 我有一个普通版本UITextView当 a 时 会剪辑第一行的顶部lineHeightMultiple被应用到它的NSMutableParagraphStyle 见下图 看起来好像lineHeightMultiple除了
  • 使用 fastapi-contrib 时出现 FastApi 分页错误

    我正在尝试向我的 fastapi 项目添加分页 所以我决定使用这个 fastapi contrib https fastapi contrib readthedocs io en latest readme html highlight p
  • 询问 MethodInfo 需要多少个参数的最有效方法是什么?

    询问 MethodInfo 是否接受参数的最有效方法是什么 如果接受 有多少 我目前的解决方案是 methodInfo GetParameters Any and methodInfo GetParameters Count 这是最有效的方
  • HttpWebRequest C# 上传文件

    我正在尝试使用 C 将我的网上商店与电子邮件营销客户端集成 我想每晚上传一次以逗号分隔的订阅者文件 他们说要让它工作 它必须是一个表单帖子 multipart form data 但我没有使用表单 我能够连接到他们的服务器 但我不断收到数据
  • 在 GROUP_CONCAT 中使用 COUNT

    这是我的桌子 id fk company 1 2 2 2 3 2 4 4 5 4 6 11 7 11 8 11 9 12 我想要的结果应该是字符串 3 2 3 1 属于每个公司的项目计数 因为这只是我的复杂查询字符串的一部分 我尝试使用这个
  • git for-each-ref 的 --format 选项的有效字段是什么?

    我试图找到在存储库上创建的第一个分支 为此 我使用了 git for each ref sort commiterdate format commiterdate short refname short count 1 不过我想了解有关该分
  • 生成的(由 T4)文件“构建操作”重置为“构建”

    我们在 Visual Studio 2013 中有一个数据库项目 在这个项目中 我们有一个生成 sql 脚本的 tt 文件 问题是生成后 生成文件的构建操作会自动设置为 构建 如果我们手动将其更改为 无 则在重新生成 运行自定义工具 后它将
  • WordPress 重写规则以排除特定的 slug

    我的重写规则functions php效果很好 function custom offers rewrite add rewrite rule offers a z index php page id 1948 offer restaura
  • Rails 应用程序维护不妨碍访问者

    我不希望访问者在我更新后端时登陆我的网站时看到 Phusion Passenger 错误消息 那么我该如何解决这个问题呢 我的部署过程从一开始就存在缺陷吗 或者我错过了什么 这是我的部署过程 所以你明白了 将新更新提交到 git 存储库并推
  • 删除旧的远程 FTP 文件夹

    我编写了一个 MySQL 数据库备份脚本 它将备份文件存储在远程 FTP 服务器中 它在根目录中创建一些以数据库名称命名的文件夹 然后在每个文件夹中创建一些以当前日期命名的文件夹 格式 yyyy mm dd 并在这些文件夹中上传以确切时间命