0

SFTP 経由でリモート サーバーにアクセスしようとしています。これには Net::SFTP::Foreign を使用しています。ディレクトリをユーザーのホームディレクトリに変更しようとすると問題が発生します。シェルのようにディレクトリを変更することはできません。

cd ~
cd ~/folder

私のperlコードは次のとおりです。

 $sftp->setcwd("~/aast-backup/$backup_type") or die "unable to change cwd: " . $sftp->error;

エラー表示

unable to change cwd: Couldn't get realpath for remote '/home/ftpkasi/aast-backup/~/aast-backup/differential

これに光を当ててください。前もって感謝します...

4

1 に答える 1

2

答えは、メソッドのドキュメントにあります。cwd

$sftp->cwd

リモートの現在の作業ディレクトリを返します。

このパッケージのいずれかのメソッドに相対リモート パスが渡されると、このディレクトリを使用して絶対パスが作成されます。

したがって、渡す相対パスはsetcwd初期のに追加されていますcwd。これは、表示されるエラー メッセージで確認できます。イニシャルcwd

/home/ftpkasi/aast-backup/

そしてあなたが電話するとき

$sftp->setcwd("~/aast-backup/$backup_type")

ディレクトリに変更しようとします

/home/ftpkasi/aast-backup/~/aast-backup/differential

これは明らかに存在しません。

于 2013-10-10T13:48:47.683 に答える