PHP遍历文件并同步上传到服务器

简介: 在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。

场景

站点迁移时原站点的图片文件太多,通过打包下载再上传到新服务器速度太慢,通过 FTP 工具直接从老服务器上传到新服务器失败。因此使用 PHP 写了一个工具直接通过工具实现上传。

实现

<?php
function traverse($dir) {
    $files = scandir($dir);    
    $destinationDirectory = str_replace("/原网站路径/", '/新网站路径/',$dir.'/');
    //输出目标路径,方便排错
    echo "$destinationDirectory\n";
    foreach ($files as $file) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        $path = $dir . '/' . $file;
        if (is_dir($path)) {
            traverse($path);
        } else {
          if (strpos($file, ".webp")) {
            echo "$path\n";//原文件路径
            echo "$destinationDirectory"."$file \n";//新文件路径
            echo "\n";
            fileUpload($path,$destinationDirectory.$file);
          }
        }
    }
}
/**
*@$local_file 本地文件路径
*@$remote_file 远程文件路径
*/
function fileUpload($local_file,$remote_file){
  
  $ftp_server = "example.com"; // FTP服务器地址
  $ftp_username = "username"; // FTP登录用户名
  $ftp_password = "password"; // FTP登录密码
   
  // 建立基础连接
  $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server\n");
   
  // 使用提供的用户名和密码登录
  if (@ftp_login($conn_id, $ftp_username, $ftp_password)) {
      ftp_pasv($conn_id, true);//如果不加此句,会导致ftp_put出现错误
      // 上传文件
      if (ftp_put($conn_id, $remote_file, $local_file, FTP_ASCII)) {
          echo "Successfully uploaded $local_file to $remote_file\n";
      } else {
          echo "There was a problem while uploading $local_file\n";
      }
  } else {
      echo "Couldn't connect as $ftp_username\n";
  }
   
  // 关闭连接
  ftp_close($conn_id);

}

$dir = "/www/mysite/images";//在traverse方法中的路径替换可以将 /www/mysite/ 替换为目标路径,比如替换为:/www/newsite/
traverse($dir);
相关文章
|
26天前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
51 5
|
15天前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
20 1
Linux 服务器下载百度网盘文件
|
2天前
|
程序员 PHP UED
一直让 PHP 程序员懵逼的同步阻塞异步非阻塞,终于搞明白了
【9月更文挑战第8天】恭喜你掌握了同步阻塞和异步非阻塞的概念,这是许多 PHP 程序员容易困惑的地方。同步阻塞指代码按顺序执行,需等待操作完成;异步非阻塞则允许后台执行操作,不阻塞程序。理解这些概念能显著提升程序性能和用户体验,特别是在高并发场景和分布式系统中。随着技术发展,越来越多的 PHP 框架支持异步编程,掌握这些概念将让你在开发中更得心应手。
|
13天前
|
存储 安全 数据库连接
php.ini 文件的用途是什么?
【8月更文挑战第29天】
24 1
|
20天前
|
关系型数据库 MySQL PHP
PHP:一种强大的服务器端脚本语言
【8月更文挑战第23天】PHP是一种被广泛使用的开源服务器端脚本语言,它的强大和灵活性使其成为开发Web应用程序的首选。本文将从PHP的基本概念、主要特性以及应用场景等方面进行深入探讨,以期帮助读者更好地理解和掌握PHP。
|
20天前
|
Oracle 关系型数据库 MySQL
PHP:一种灵活而强大的服务器端脚本语言
【8月更文挑战第22天】PHP是一种广泛使用的开源通用脚本语言,尤其适用于Web开发。它快速、灵活且易于学习,使其成为开发者的首选。本文将探讨PHP的基本概念、优点以及如何开始学习PHP。让我们一起了解这个强大的工具,开启编程之旅吧!
|
22天前
|
存储 安全 文件存储
【服务器数据恢复】Apple苹果Xsan文件系统卷宗误操作导致文件丢失数据恢复案例
客户因误操作删除了macOS服务器上的重要图片和视频文件,需紧急恢复。Xsan文件系统作为苹果专为高负载环境设计的64位簇文件系统,在未有专门恢复工具的情况下,常规RAW恢复仅能提取小部分连续存储的小文件,且无目录结构。通过专业的数据恢复流程,包括安全挂载、阵列重组,并使用专用工具解析文件系统以恢复目录结构,最终成功恢复丢失的文件。此案例突显了Xsan文件系统的特点及其恢复难度。
23 1
|
14天前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
16 0
|
18天前
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
|
23天前
|
敏捷开发 数据可视化 测试技术
阿里云云效产品使用合集之怎么在php composer安装自己服务器的代码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。