使用 Perl 和 ROBOCOPY 使用相同的 permissions/previleges 递归复制文件和文件夹

Copy the files and folders recursively with the same permissions/previleges using Perl & ROBOCOPY

我正在尝试通过 ROBOCOPY 将文件和文件夹(包括子文件夹)复制到目标文件夹(从用户端获取)。但是,我无权在目标位置创建文件夹。我有管理员用户名和密码。如何实现此代码以在此脚本或批处理文件中使用 username/password。 (不要考虑来自用户的 "project")

use strict;
use warnings;
use Cwd;

while(1)
{
    print "Enter the project \& Destination Folder: ";
    my $input_rec = <STDIN>;
    chomp($input_rec);
    if($input_rec=~m/(exit|q|x)/i) {  exit;  }
    elsif(!$input_rec && $input_rec eq '') { }
    elsif($input_rec!~m/(\s|\t)/s) { }
    else
    {
        my ($dept, $dest) = split /\s/, $input_rec;
        print "DEPT: $dept\t$dest\n";
        system("ROBOCOPY \\server1\Robo\Source\ISBN \\server2\Robo\Source\ISBN /MIR /SEC /SECFIX");
        exit;
    }
}

否则,我需要使用 perl 脚本将文件和文件夹复制到目标文件夹,而无需使用 ROBOCOPY,并使用用户无法访问的管理员凭据。

任务是,如果用户请求管理员创建一个 folders/subfolders 和 rights/permissions/structure,因为它在原始源中,它应该由管理员创建,并由用户端请求目的地。每次管理员都无法做到这一点,因此我们试图使这个过程自动化。用户无法访问服务器以复制文件夹。

如果有人建议如何解决这个问题,我们将不胜感激。

你可以使用中间的东西。您可以使用用户权限在 windows 上创建计划任务。您应该创建 as "One time" 任务。您可以启动任意多个。

Task view User

您可以使用此命令从您的 perl 脚本中调用。

SCHTASKS /运行 /TN "Name of the task"

这是一个想法。希望对您有所帮助。

my $source = "\\server1\Robo\Source\ISBN";
print "DEPT: $dept\t$dest\n"; #$dest = "\\server2\Robo\Destination\ISBN";
system("net use $source /user:.\\\administrator xxxx");
system("net use $dest /user:.\\administrator xxxx");
system("ROBOCOPY $source $dest /MIR /SEC /SECFIX");

以上几行支持根据实际权限将文件和文件夹复制到目的地。希望这是美好的一天!