0

こんにちは、ディレクトリ構造全体をコピー元からコピー先にコピーする perl スクリプトを作成しました。次に、perl スクリプトが行ったことを元に戻す復元スクリプトを perl スクリプトから作成する必要がありました。つまり、スクリプト (シェル) を作成します。 bash機能を使用して、宛先からソースにコンテンツを復元します再帰的にコピーできる正しい関数またはコマンドを見つけるのに苦労しています(要件ではありません)が、以前とまったく同じ構造が必要です

以下は、特にアルゴリズムを探している復元プロセスを実行するために、restore というファイルを作成しようとしている方法です。

また、復元はコマンド ライン ディレクトリ入力に構造を復​​元します。指定されていない場合は、perl スクリプト $source $target にデフォルトの入力が提供されていると想定できます。この場合、ターゲットからソースにコピーします。

したがって、1 つのスクリプトに 2 つの異なる部分があります。

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";

私が持っている最後の問題は、perl のいくつかの変数を参照しているため、復元ファイルで $1 を取得できなかったことです。

しかし、restore as $0 = ./restore $1=/home/xubuntu/User を実行するときにコマンドライン入力を取得するためにこれが必要です

4

2 に答える 2

1

まず、コピー スクリプトを作成する必要があることがわかりました。ファイルをコピーするだけでよい場合は、次を使用できます。

system("cp -r /sourcepath /targetpath");

次に、サブフォルダーをコピーする必要がある場合は、-r スイッチを使用できますね。

于 2013-06-05T19:37:22.147 に答える