0

ルビーのフォルダをコピーしようとしていますが、「ディレクトリを自分自身にコピーできません」というエラーが表示されます

なぜこれが起こるのか分かりませんが、誰か説明してもらえますか?そして、どうすれば新しい名前で完全なフォルダをコピーすることができますか。これが私のコードで、名前にタイムスタンプが含まれるソースフォルダーをコピーしようとしています。

$releaseFolder = 'D:\ruby_workspace\fpsupdater\release'
$frontendSubPath = '\server\pdixfrontend\tomcat\conf'
$backendSubPath = '\server\pdixbackend\tomcat\conf\Catalina'


def println(text)
  puts $timestamp.inspect + ': ' + text
end


def getFileTimestamp()
 stamp = $timestamp.inspect
 stamp.gsub!(/\s+|:|\++/,"_")
end

def backupContext()

target = @configHash["target"]

if (Dir.exists?(target))

  println("backup of target " + target)
  println("need to backup: " + target + $frontendSubPath)
  println("need to backup: " + target + $backendSubPath)
  source = "#{target}#{$frontendSubPath}"
  backup = "#{target}#{$frontendSubPath}\\" + getFileTimestamp + "_conf" 
  println(source)
  println(backup)

  FileUtils.cp_r source , backup

else
  puts "cannot backup because target does not exists"
end
end
4

2 に答える 2

2

ディレクトリを同じディレクトリにコピーすることはできません。例:

FileUtils.cp_r "C:/TEST", "C:/TEST"

コピー先のディレクトリに再帰コピーを作成することもできません。これは、無限ループに陥る可能性があるためです。

FileUtils.cp_r "C:/TEST", "C:/TEST/SUBFOLDER"

それが必要な場合は、一時ディレクトリを使用してから元に戻します。また、コードを最適化してください。getFileTimestampの方がはるかに優れている可能性があります:-)

于 2013-03-22T09:10:25.960 に答える
0
backup = "#{target}#{$frontendSubPath}\\" + getFileTimestamp + "_conf" 

backendSubPathの代わりにfrontedSubPathを使用していることに注意してください

于 2013-03-22T09:08:23.563 に答える