現在、運用サーバーにログインして最新の SQL ダンプをステージング サーバーに取得するバックアップ スクリプトを作成中です。SQL ダンプを取得することには問題はありませんが、最新のバックアップ ファイルを一時フォルダーに移動する際に問題が発生します。
私のバックアップ スクリプト ユーザー:mysqlBackupUser
このスクリプトの場所として、またバックアップを保存するために、このユーザーのホーム ディレクトリを使用しています。フォルダー構造は次のとおりです。
/home
|- mysqlBackupUser
|- .ssh
|- backups
|- bin
私のスクリプトはそこにありbin
、バックアップはbackups
ディレクトリにダウンロードされます
ディレクトリbackups
には、サーバーとバックアップの種類を整理するための他のフォルダーもあります。例:
/backups
|-mysql
|- production1
|- production2
|-misc
|- production1
|- production2
これまでのところ、すべて順調で期待通りに動作しています。問題は、次の場合です (これに限定されません)。
/home/mysqlBackupUser/backups/mysql/production1/
tmp ディレクトリを作成し_lastBackUp
、以前のバックアップをそこへ移動しようとすると、次のメッセージが表示されます。
find: Failed to change directory: Permission denied
私のコードは次のとおりです:
local tmpBackUpDir="${LOCAL_LOCATION_DIR}/_lastBackUp/"
# Ensure the directory exist
mkdir -p "${tmpBackUpDir}"
# move any previous files to bak
find "${LOCAL_LOCATION_DIR}/" -type f -exec mv -t "${LOCAL_BAKUP_DIR}" {} \+;;
明確にするために:
LOCAL_LOCATION_DIR = /home/mysqlBackupUser/backups/mysql/production1
tmpBackUpDir = /home/mysqlBackupUser/backups/mysql/production1/_lastBackUp/
スクリプトがどのように使用されているかを理解するには:現在、私はユーザーとしてログインしており、
sudo su mysqlBackupUser
ユーザーとしてログインします。これが問題かどうかはわかりませんし、このユーザーとしてログインしてテストすることもできません。スクリプトは cron によって実行され、このユーザーとして機能します (キーはこのユーザーの自動化を容易にするために設定されています)。そのため、これが本当に問題であるかどうかはわかりません。
_lastBackUp
すべてのフォルダの所有権と権限が によって所有されていることを確認しましたmysqlBackupUser
。テストのために 777 に設定しました_lastBackUp
が、それでも権限が拒否されました...
私の完全な間違いは次のとおりです:
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: failed to restore initial working directory: Permission denied
それぞれはfind: Failed to change directory: Permission denied
移動しようとしているファイルごとにあります_lastBackUp
これに関して何かご意見がございましたら、よろしくお願いいたします。
答え1
エラーは権限がないということのようです変化ディレクトリ。
r-x
スクリプトが実行されるパスに至る各フォルダーにユーザーが少なくともアクセス権を持っていることを確認します。- ユーザーが少なくとも
rwx
バックアップが保存されているフォルダーとファイルを持っていることを確認します。 - ユーザーがログインシェルを持っているかどうかを確認します
$HOME
。$PATH
持っている場合は、操作を開始する前にスクリプトをcd
適切な場所に配置します。持っていない場合は、すべてのコマンドと場所を定義します。絶対パス。
他に考えられる原因は思い当たりません。
答え2
mkdir が機能している場合 (機能しているようです)、親ディレクトリに対して ls -al を実行すると、ディレクトリの所有者は誰ですか? どこかの段階で権限に問題があるように思われます。