`

PHP递归拷贝(模拟linux的cp命令的行为)

 
阅读更多
/**
* 递归拷贝:
* 如果目标路径存在且为目录则拷贝到此目录下,
* 如果目标路径不存在则原路径拷贝为目标路径
*@param $source 原文件位置
*@param $dest 目标路径
*@return 成功 true 失败 false 
*/
function RecursiveCopy ($source, $dest) {
	if (!file_exists($source)) {
		return false;
	}
	$parentDest = dirname($dest);
	if (!makeDIR($parentDest)) {
		return false;
	}
	if (!is_dir($source))
	{
		$dest = is_dir($dest) ? $dest . '/' . basename($source) : $dest;
		return @copy($source,$dest);
	} else {
			if (is_dir($dest)) {
				$dest .= '/' . basename($source);
			}
			if (!makeDIR($dest)) {
				return false;
			}
			$sourceHandle = opendir($source);
			while ($fileName = readdir($sourceHandle)) {
				if ($fileName == '.' || $fileName == '..')
					continue;
				if (is_dir($source . '/' . $fileName)) {
					if (!RecursiveCopy($source . '/' . $fileName, $dest)) {
						return false;
					}
				} else {
					 if (!@copy($source . '/' . $fileName, $dest . '/' . $fileName))
					 	return false;
				}
			}
			return true;
	}
	return false;
}

/**
 * 创建目录(递归)
 */
function makeDIR($dir)
{
	if (is_dir($dir) || @mkdir($dir)) return TRUE;
	if (!makeDIR(dirname($dir))) return FALSE;
	return @mkdir($dir);
}

 

分享到:
评论

相关推荐

    linux cp命令 源代码

    在Linux操作系统中,`cp`命令是一个非常基础且重要的工具,用于复制文件和目录。它在文件系统管理中扮演着核心角色。这个标题所指的“linux cp命令 源代码”应该是一个实现了Linux `cp`命令功能的个人版本,可能是...

    递归调用实现linux的通配符匹配命令

    在linux系统中我们可以使用ls Z*_2014*来查找相应的匹配文件,本程序使用c语言通过递归调用,实现了这个功能。

    Qt目录下的文件递归拷贝源码

    此源码实现了文件夹下递归遍历文件,实现文件拷贝。代码已经变异通过,可直接运行,给用户的工具源码,可以直接编译并在产品中使用,经过长时间测试

    Linux下的cp命令详解

    Linux下的cp命令详解 Linux下的cp命令是用于复制文件或目录的命令,是Linux操作系统中最基本也是最常用的命令之一。cp命令的基本语法为:`cp [options] source destination`,其中`source`是要复制的文件或目录,`...

    linux cp 命令.docx

    Linux cp 命令详解 Linux 中的 cp 命令是一个基本的文件管理命令,用于复制文件或目录。下面将详细介绍 cp 命令的语法、选项、示例和应用场景。 语法 cp 命令的语法非常简单,基本语法如下所示: ``` cp [选项] ...

    Windows下的Linux中cp复制命令(非bat,是cp的Windows命令实现)

    总之,`cp`命令在Windows下的Linux模拟环境中,如MSYS2,可以提供与原生Linux系统一致的文件复制体验。通过理解和掌握`cp`命令的用法,无论是Linux还是Windows用户,都能有效地管理和操作文件系统。

    linux操作系统cp命令详细的使用教程.pdf

    * 在使用 cp 命令拷贝文件时,建议使用 `-i` 选项,以避免无意中覆盖目标文件。 * 在使用 cp 命令拷贝目录时,需要确保目标目录存在。 * 在使用 cp 命令拷贝文件时,需要确保目标文件不存在,否则将被覆盖。 cp ...

    Linux中cp和scp命令的使用方法.docx

    "Linux 中 cp 和 scp 命令的使用方法" Linux 中的 cp 和 scp 命令是两个非常重要的文件 copy 命令,它们都可以用来 copy 文件,但是它们的使用场景和方法有所不同。 cp 命令是用于在同一台电脑上,在不同的目录...

    linux cp命令的实现

    在Linux操作系统中,`cp`命令是日常工作中最常用的工具之一,用于复制文件或目录。它的功能强大且灵活,能够帮助用户轻松地备份数据、创建副本或者在不同的目录之间移动文件。下面我们将深入探讨`cp`命令的实现原理...

    python文件递归拷贝

    在Python编程中,文件递归拷贝是一种常见的操作,特别是在处理目录结构时,例如备份文件、迁移数据或者在不同系统间同步文件。本篇将详细讲解如何使用Python实现文件和目录的递归拷贝功能。 首先,我们需要了解什么...

    实现linux的cp命令

    在Linux系统中,`cp`命令是一个非常基础且重要的工具,用于复制文件或目录。它在用户日常操作和系统管理中扮演着不可或缺的角色。本文将深入解析如何通过C语言实现一个简单的`cp`命令功能。 首先,我们来看一下提供...

    java 递归拷贝文件显示进度demo

    在Java编程中,递归拷贝文件是一种常见操作,特别是在处理目录结构时。这个"java 递归拷贝文件显示进度demo"是一个实用的示例,它不仅实现了从一个源目录到目标目录的深度拷贝,而且还提供了进度显示功能,这对于...

    Linux cp命令演示

    Linux是世界上最广泛使用的...了解和掌握Linux的`ls`和`cp`等基础命令,是Linux学习的起点,也是系统管理员和开发者必备的技能。通过熟练使用这些命令,用户可以更高效地管理文件系统,进行文件备份、目录整理等工作。

    文件夹递归拷贝及跨数据库表间拷贝

    这里我们关注的是“文件夹递归拷贝”和“跨数据库表间拷贝”的技术实践。这两个主题分别涉及到文件系统操作和数据库数据迁移。 首先,让我们深入理解“文件夹递归拷贝”。在计算机科学中,递归是一种解决问题的方法...

    Linux常用命令大全.pdf

    本文将详细介绍Linux中一些常用的基本命令及其使用方法,这些命令是系统管理员和高级用户必须掌握的基础知识。 1. cd命令:该命令用于改变当前工作目录。 - cd:返回当前用户的家目录。 - cd 目录名:切换到指定...

    最全Linux常用命令大全.pdf

    Linux操作系统是开源且多用户的一种操作系统,其命令行界面提供了丰富的命令工具来执行各种任务。以下是一些关于Linux常用命令的详细说明: 1. **pwd**:`pwd`(Print Working Directory)命令用于显示当前工作目录...

    最全Linux常用命令大全-linux常用命令全集

    `cp` 命令用来拷贝文件,要复制文件,输入命令:`cp <source filename> <target filename>`。例如,`cp t.txt Document/t` 命令将把文件 `t.txt` 复制到 `Document` 目录下,并命名为 `t`。 8. `mv` 命令:移动文件...

    linux 常用命令大全总结,良心总结

    3. cp命令:拷贝文件或目录,例如cp 文件名 目的文件夹 (-r表示递归拷贝,-i表示交互操作,-f表示强制) 4. mv命令:将目录或文件重命名或者移动,例如mv 文件名 目的文件夹 5. cat命令:显示文件内容,例如cat ...

    linux下实现文件夹的拷贝,递归实现

    linux 系统下完成的文件夹的递归拷贝,已经通过测试

    linux常用命令大全.pdf

    ### Linux常用命令详解 #### 一、文件管理 1. **ls**:此命令用于列出当前目录中的文件和子目录。通过使用不同的选项,可以改变其输出格式。 - `-l`:使用长格式列表输出,包括文件权限、拥有者、组、大小等详细...

Global site tag (gtag.js) - Google Analytics