定期的にフォルダをバックアップに転送するには、rsyncを使用する必要があります(デフォルトではそれを自動化したい)。最初は毎回パスワードを入力する必要がありましたが、公開/秘密鍵認証メカニズムを使用してこれを達成しました。
ただし、権限で保護されたファイルを除いて、sudoを使用せずにパスワードを要求せずに簡単にファイルを送信できます。彼らにはこう言います。rsync: send_files failed to open "/home/usr/...../checkpoints/246/descriptors.json": Permission denied (13) .
したがって、sudo
パスワードを使用して入力する必要があります。この問題をどのように解決できますか? 50ミリ秒間隔など、定期的な転送のためにパブリックディレクトリにフォルダを追加します。だからこれを自動化する必要があります。
答え1
root
作成したSSHキーを使用するように設定するか、ルート以外のユーザーとしてファイルを読み取ることができるように、ファイルの権限を変更する2つのオプションがあります。
オプション1:SSHキーをrootとして使用する
ユーザーはルートであるため、ユーザーのために生成されたSSH秘密鍵のみを読み取って使用できます。 ssh
フラグを使用して秘密鍵を指定できます。rsync-i
を使用すると、フラグを使用してリモートシェルコマンドを変更できます-e
。これにより、次のコマンドが生成されます。
sudo rsync -e "ssh -i /home/usr/.ssh/id_rsa" <the rest of your rsync args>
/home/usr/.ssh/id_rsa
作成したSSHキーの実際のパスに置き換えます。あなたのSSHキーがパスワードで保護されていないとします。その場合は、削除パスワードを使用する必要がありますssh-keygen -p <keyfile>
。
オプション2:ソースファイルの権限の変更
最もきれいな解決策は、ファイルに記録されている内容を変更して、最初から root ではなくユーザーが所有するようにすることです。ただし、chown
ファイルをコピーする前にコピーすることもできます。例えば、
sudo chown -R "$USER" "/home/usr/...../checkpoints"
しかし、競争条件があることに注意してください。 rsyncが完了する前に他のユーザーによって作成された新しいファイルにはエラーが発生する可能性があり、次回の実行までコピーされません。