- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在路径 U:\0012* 中的每个子文件夹中,我创建一个示例文件夹并将文件从适当的子文件夹移动到示例文件夹。
FOR /d %%A IN (U:\0012\*) DO mkdir %%~A\example & move %%~A\*.* %%~A\example\
FOR /d %%A IN (U:\0012\*) DO
C:\cygwin\bin\rsync.exe -av -h --progress --checksum "/cygdrive/U/0012/%%A/*.*/" "/cygdrive/U/0012/%%A/EXAMPLE/"
最佳答案
我认为您正在与“Windows World”和“Unix World”发生冲突。
您正在尝试什么 rsync
,这是自然的Unix工具,是使用批处理文件路径复制并将其放入rsync路径。这是行不通的。
我会剖析你的代码:
在这部分中,您仍处于您使用的“Windows 世界”FOR
通过 U:\0012\*
循环Windows 中的路径 FOR /d %%A IN (U:\0012\*) DO
.
您试图“帮助”rsync
带有 unix 样式路径 /cygdrive/U/0012/
,但变量 %%A
包含windows样式路径!
C:\cygwin\bin\rsync.exe -av -h --progress --checksum "/cygdrive/U/0012/%%A/*.*/" "/cygdrive/U/0012/%%A/EXAMPLE/"
The source and destination cannot both be remote. rsync error: syntax or usage error (code 1) at main.c(1292) [Receiver=3.1.2]
@echo off
FOR /d %%A IN (U:\0012\*) DO (
SET "copy_path=%%A"
C:\msys64\usr\bin\cygpath.exe -u %copy_path% > tmp_file.tmp
SET /P unix_path=<tmp_file.tmp
DEL tmp_file.tmp
ECHO "%unix_path%"
C:\msys64\usr\bin\rsync.exe -av -h --progress --checksum --remove-source-files "%unix_path%" "%unix_path%/EXAMPLE/"
)
)
C:\prg\PowerShell\test\SO\test1\*
然后它使用
cygpath.exe
将路径转换为 unix 样式路径并将其保存到临时文件 (
tmp_file.tmp
)。然后它从临时文件中将路径读入 unix 变量
%unix_path%
然后在
rsync.exe
中使用.
--remove-source-files
, 传输后删除文件。
rsync
真的应该表现得像移动。唯一的区别是如果目录example
存在它与文件一起复制。 (如果没有,则创建并将文件移到那里)-我认为这是查看 mkdir && move
时的初衷。 . ENABLEDELAYEDEXPANSION
从文件中正确读取变量(在它只是最后一次读取之前)
"!unix_path!/"
最后一个反斜杠对于 rsync 正确运行非常重要。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /D %%A IN (C:\prg\t\*) DO (
ECHO %%A
SET "copy_path=%%A"
C:\msys64\usr\bin\cygpath.exe -u !copy_path! > tmp_file.tmp
SET /P unix_path=<tmp_file.tmp
DEL tmp_file.tmp
ECHO "!unix_path!"
ECHO C:\msys64\usr\bin\rsync.exe -av --progress --checksum --remove-source-files "!unix_path!/" "!unix_path!/example/"
C:\msys64\usr\bin\rsync.exe -av --progress --checksum --remove-source-files "!unix_path!/" "!unix_path!/example/"
)
--remove-files
&&
--delete
由于 rsync 可能会失败,因此在一次操作期间的选项。你可以在这里阅读更多
superuser.com或
unix stack exchange甚至
server fault .
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /D %%A IN (C:\prg\t\*) DO (
ECHO %%A
SET "copy_path=%%A"
C:\msys64\usr\bin\cygpath.exe -u !copy_path! > tmp_file.tmp
SET /P unix_path=<tmp_file.tmp
DEL tmp_file.tmp
ECHO "!unix_path!"
ECHO C:\msys64\usr\bin\rsync.exe -av --progress --checksum --remove-source-files "!unix_path!/" "!unix_path!/example/"
C:\msys64\usr\bin\rsync.exe -av --progress --checksum --remove-source-files "!unix_path!/" "!unix_path!/example/"
)
REM To delete empty directories - the windows way
REM save current directory to stack
pushd
cd C:\prg\t
REM Will delete all empty directories (subdirectories) at current path
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
REM return to saved directory
popd
关于batch-file - 如何使用rsync而不是批量移入for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002133/
当我使用 --progress 标志运行 rsync 时,我得到有关传输的信息,如下所示。 path/to/file 16 100% 0.01kB/s 0:00:01
为了使用单个 rsync 命令将两个源目录(例如 ~/src1 和 ~/src2)同步到远程系统中的两个独立目标(例如/tgt 和/tgt/sub_tgt),我正在做: rsync ~/src1 ui
从 rsync 手册文档中,我看到通过使用选项 rsync-path,可以指定要在远程计算机上运行的程序以启动 rsync。特别是,该程序可以是一个包装脚本,它在中间调用实际的 rsync 命令,但它
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我在远程主机上有一些文件(在目录中),我想在目录级别以原子方式执行 rsync 以在本地主机上提取文件(在分布式设置中)。我能想到的一种方法是一种非常简单的情况,我可以在本地主机上进行文件备份,然后用
我们有一个 130GB 大小的文件夹,其中包含数百万个微小 (5-20k) 图像文件,我们需要将它从旧服务器 (EC2) 移动到新服务器(德国 Hetzner)。 我们的 SQL 文件 SCP 很快就
我想知道是否有一种方法(命令)可以用来查找 rsync 地址的大小,而无需开始同步? 例如,我如何找到 rsync://mirrors.standaloneinstaller.com/vim/ 的大小
我想同步/Volumes/B/中的所有内容,除了我想全局排除的缓存目录。另外,我不想 rsync 任何其他/Volume/ 我有以下排除文件: + /Volumes/B/*** - Cache/ -
rsync -av --size-only --include="*/" --include="*.jpeg" --exclude="*" ~/alg/temperature/ ~/alg/tmp/
我正在使用 rsync 同步文件夹,如果现有文件已被修改,则对其进行备份。目前所有修改过的文件都备份到一个单独的目录中,以同步时间为后缀。这是使用以下命令: rsync --times --backu
我希望 rsync 排除所有包含具有特定名称的文件的目录,比如“.rsync-exclude”,独立于“.rsync-exclude”文件的内容。 如果文件“.rsync-exclude”只包含“*”
例子: rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln 我的主要问题是文件夹/tmp/fol1 在远程机器上不存在。
以下命令按预期工作... cp -ur /home/abc/* /mnt/windowsabc/ rsync 相比它有什么优势吗?有没有更好的方法让备份文件夹每 24 小时保持同步? 最佳答案 Rsy
我想从本地计算机到服务器rsync。在不存在的目录上,我希望 rsync 首先在服务器上创建该目录。 我怎样才能做到这一点? 最佳答案 如果要创建的叶目录不止最后一个,您可以先运行单独的 ssh ..
我使用 rsync 来更新我的静态网站。我目前cd到本地网站目录,运行rsync命令,然后在下一行输入密码。我已将我的 rsync 调用保存到一个文本片段中(这样 _rs 就可以扩展到我的调用)。有没
我正在运行如下命令: rsync -vuan "/Volumes/Working/foldername/" "/Volumes/Archive/foldername/" 当文件夹名称包含“/”(如“1
我尝试使用以下命令从服务器进行 rsync,并收到以下错误消息: rsync -e ssh -avz name@home.com:/home/name/. . receiving file list
所以我有这个代码: rsync \ --archive \ --verbose \ --compress \ --delete \ --no-motd \ --ex
我使用 rsync 来更新我的静态网站。我目前cd到本地网站目录,运行rsync命令,然后在下一行输入密码。我已将我的 rsync 调用保存到一个文本片段中(这样 _rs 就可以扩展到我的调用)。有没
我正在运行如下命令: rsync -vuan "/Volumes/Working/foldername/" "/Volumes/Archive/foldername/" 当文件夹名称包含“/”(如“1
我是一名优秀的程序员,十分优秀!