2012-06-13 65 views
1

我有一个包含50,000个.jpg图像的目录。 让我们调用这个目录“imageDir”,以及我试图复制到“outputDir”的空目录。unix:发生错误时继续cp?

当我执行:

cp imageDir/* outputDir/ 

各地30,000ish图像通过我得到:

cp: cannot open `imageDir/234235.jpg' for reading: Bad address 

(这并不总是在同一个文件时会发生),然后复制操作将停止而无需进行复制其余的文件。 我尝试添加了-R选项,在阅读,它将继续复制即使发生错误后:

cp -R imageDir/* outputDir/ 

但这并没有解决我的问题。

是否对可以一次成功复制的文件数有限制? 为什么我看到这个错误,我该如何解决它? (如果它发生在这里和那里的照片,只要它完成了其余部分,我会好起来的)

此外:这是在Windows 7上使用Cygwin。 谢谢!

+0

也许'rsync'有更好的错误处理选项? – cdhowie

+0

@cdhowie也许?我不知道rsync。这个例子的语法是什么? – Ken

+0

“cp”的-R选项与错误处理无关;这意味着遇到的任何子目录的内容将递归复制到目标。 –

回答

2

看起来像是Cygwin给我的一个问题。既然你说它是随机发生的,你可能只想在它发生时再试一次。这里有一个脚本(未经测试),将做到这一点:

#!/bin/sh 
for i in imageDir/* 
do 
    cp $i outputDir/ 
    while [ $? -ne 0 ] 
    do 
    cp $i outputDir/ 
    done 
done 
+0

嗯..我很欣赏这个建议,但它极其慢。我不认为它会如此缓慢......但如果没有其他人提出某些问题,我会给你答案。 – Ken

+0

如果确实有效,即使速度很慢,您也可以加注我的答案;) –

+0

向'cp'提供'-v'可能是一个好主意,这样您就可以看到发生了什么。 (例如,除非这是从cron运行的。) – cdhowie

相关问题