嗨,我编写了一个 perl 脚本,它将所有整个目录结构从源复制到目标,然后我必须从 perl 脚本创建一个恢复脚本,这将撤消 perl 脚本所做的事情,即创建一个脚本(shell),它可以使用 bash 功能将内容从目标恢复到源我正在努力寻找可以递归复制的正确函数或命令(不是必需的),但我想要与以前完全相同的结构
下面是我试图创建一个名为 restore 的文件来执行恢复过程的方式,我特别在寻找算法。
如果没有提供,restore 会将结构恢复到命令行目录输入 如果没有提供,您可以假设提供给 perl 脚本 $source $target 的默认输入在这种情况下,我们希望从目标复制到源
所以我们在一个脚本中有两个不同的部分。
1 将从源复制到目标。
2 它将创建一个脚本文件,该文件将撤消第 1 部分所做的事情,我希望这可以说得很清楚
unless(open FILE, '>'."$source/$file")
{
# Die with error message
# if we can't open it.
die "\nUnable to create $file\n";
}
# Write some text to the file.
print FILE "#!/bin/sh\n";
print FILE "$1=$target;\n";
print FILE "cp -r \n";
# close the file.
close FILE;
# here we change the permissions of the file
chmod 0755, "$source/$file";
我遇到的最后一个问题是我无法在恢复文件中获得 $1,因为它引用了 perl 中的某个变量
但是当我运行 restore as $0 = ./restore $1=/home/xubuntu/User 时,我需要这个来获取命令行输入