我在网络上有一个存储文件夹,所有用户都将在其中将他们的活动数据存储在服务器上。由于位置问题,现在该服务器将被新服务器替换,因此我需要将子文件夹文件从旧服务器存储文件夹复制到新服务器存储文件夹。我有以下前:
从 \Oldeserver\storage\data & files
到 \New server\storage\data & files
。
xcopy.exe 绝对是你的朋友。它内置在 Windows 中,因此成本不高。
只需xcopy /s c:\source d:\target
你可能想要调整一些东西;我们还添加的一些选项包括:
/s/e - 递归复制,包括复制空目录。
/v - 添加此项以验证副本与原件的对比。较慢,但对于偏执狂。
/h - 复制系统和隐藏文件。
/k - 将只读属性与文件一起复制。否则,所有文件都变为可读写。
/x - 如果你关心权限,你可能想要 /o 或 /x。
/y - 在覆盖现有文件之前不提示。
/z - 如果您认为复制可能失败并且想要重新启动它,请使用它。它在每个文件复制时都会在每个文件上放置一个标记,因此您可以重新运行 xcopy 命令以从它停止的地方继续。
如果您认为 xcopy 可能会在中途失败(例如当您通过不稳定的网络连接进行复制时),或者您必须停止它并希望稍后继续,您可以使用 xcopy /s/z c:\source d:\target
。
希望这可以帮助。
我最喜欢的备份数据是:
ROBOCOPY "C:\folder" "C:\new_folder" /mir
/mir 用于镜像。您还可以使用 /mov 移动文件。它重现了完全相同的文件夹。它可以根据需要删除/覆盖文件。对我很有用。它比 xcopy / copy 快得多。它也内置在 Windows 中。
来源:http://technet.microsoft.com/en-us/library/cc733145.aspx
为了清楚起见,当您使用 xcopy /s c:\source d:\target
时,请在 c:\source 和 d:\target 周围加上“”,否则会出错。
即,如果路径中有空格,即如果你有:
"C:\Some Folder\*.txt"
但如果您有以下情况则不需要:
C:\SomeFolder\*.txt
您可能想看看 XCopy 或 RoboCopy,它们是适用于 Windows 上几乎所有文件复制操作的非常全面的解决方案。
echo f | xcopy source destination /y
将使其自动运行。它为所有问题分配一个“f”作为响应。它还将传递覆盖请求(我认为 f 被视为是)。
要绕过“在目标上指定文件名或目录名(F = 文件,D = 目录)?”使用 xcopy 提示,您可以执行以下操作...
echo f | xcopy /f /y srcfile destfile
或者对于我们这些只是复制大型子结构/文件夹的人:
如果复制多个文件,则使用 /i 指定目标必须是一个目录
如果要复制文件不使用绝对路径,也就是相对路径:
不要忘记在路径中写反斜杠而不是斜杠
例子:
copy children-folder\file.something .\other-children-folder
PS:可以使用这些称为“批处理参数”的通配符检索绝对路径
@echo off
echo %%~dp0 is "%~dp0"
echo %%0 is "%0"
echo %%~dpnx0 is "%~dpnx0"
echo %%~f1 is "%~f1"
echo %%~dp0%%~1 is "%~dp0%~1"
在此处查看有关副本的文档:https://technet.microsoft.com/en-us/library/bb490886.aspx
以及这里的批处理参数文档:https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
@echo off
rem The * at the end of the destination file is to avoid File/Directory Internal Question.
rem You can do this for each especific file. (Make sure you already have permissions to the path)
xcopy /Y "\\Oldeserver\storage\data\MyFile01.txt" "\\New server\storage\data\MyFile01.txt"*
pause
rem You can use "copy" instead of "xcopy "for this example.
您可以使用 esentutl 复制(主要是大)带有进度条的文件:
esentutl /y "my.file" /d "another.file" /o
进度条如下所示:
https://i.stack.imgur.com/urFDl.png
如果您可以使用 Bash,您可以简单地使用以下带有递归选项的命令。
cp -r "C:\Users\sourceFolder\." "C:\Users\destinationFolder"
这将复制包含在 sourceFolder
insde destincationFolder
下的所有文件和文件夹
不定期副业成功案例分享
/i
- 如果目标不存在并且复制多个文件,则假定目标必须是一个目录。echo f | xcopy /s /f srcfile destfile