[Laravel] Git을 사용하지 않고 애플리케이션을 쉽게 백업
소개
패키지 「laravel-backup
」를 사용하면, 소스 파일이나 DB의 백업이 가능하게 된다고 하는 기사를 보고 재미있을 것 같고, 백업하기까지의 일련의 흐름을 기사로 했습니다. 기본적으로 백업 대상은 로컬로 설정되지만 임의의 위치에 저장할 수 있으므로 덤으로 S3에서 저장하는 방법도 설명합니다.
환경
※PHP나 Laravel의 버젼에 의해 사용하는 laravel-backup의 버젼이 달라집니다.
자세한 내용은 여기을 참조하십시오.
설치 및 설정
여기에서는 laravel-backup을 설치한 후 백업을 설정합니다.
설치
laravel-backup을 설치합니다.
$ composer require spatie/laravel-backup
설정 파일 작성
구성 파일config/backup.php
을 작성하려면 다음 명령을 실행하십시오.
$ php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
Copied File [/vendor/spatie/laravel-backup/config/backup.php] To [/config/backup.php]
Copied Directory [/vendor/spatie/laravel-backup/resources/lang] To [/resources/lang/vendor/backup]
Publishing complete.
실행 결과로config/backup.php
및 resources/lang/vendor/backup
가 생성됩니다.
덧붙여서 resources/lang/vendor/backup
아래에는 백업 실패 등으로 통지 메시지를 보낼 때의 언어 파일이 준비되어 있습니다. 언어 파일은 20개국 이상이며 일본어 번역 버전도 준비되어 있습니다.
백업 대상 변경
백업 대상은 config/backup.php
의 disks
에 설정되어 있습니다.
이번에는 기본 local로 진행합니다.
config/backup.php<?php
return [
'backup' => [
(省略)
'destination' => [
(省略)
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
'local', //ここで設定
],
],
(省略)
],
];
disks로 설정된 local은 config/filesystems.php
의 disks와 호환됩니다.
config/filesystems.php<?php
return [
(省略)
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
(省略)
],
];
알림 대상 설정
백업 런타임에 알림 사용 여부를 지정할 수 있습니다(명령에서). 통지를 지정했을 때에 송신원, 통지처가 미설정이면 에러가 발생하므로 반드시 설정할 필요가 있습니다. 구성 파일은 config/backup.php
입니다.
config/backup.php'notifications' => [
// 省略
'mail' => [
// 通知先のメールアドレス
'to' => '[email protected]',
// 送信元
'from' => [
'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
],
통지 설정에 대해서는 이쪽의 기사가 참고가 된다고 생각합니다.
참고: Laravel 메일 전송 기능 구현에서 mailtrap 및 Gmail SMTP 서버를 사용해보기
백업 실행
백업 명령을 확인한 후 실행하고 싶습니다.
백업 명령 확인
$ php artisan list
backup
backup:clean Remove all backups older than specified number of days in config.
backup:list Display a list of all backups.
backup:monitor Monitor the health of all backups.
backup:run Run the backup.
백업(모두)
$ php artisan backup:run
Starting backup...
Dumping database LaravelBackup...
Determining files to backup...
Zipping 228 files and directories...
Created zip containing 228 files and directories. Size is 618.99 KB
Copying zip to disk named local...
Successfully copied zip to disk named local.
Backup completed!
성공하면 storage/app/〇〇
에 zip 파일이 생성됩니다. (〇〇은 .env
파일의 APP_NAME을 포함해야합니다)
백업(DB 전용)
$ php artisan backup:run --only-db
백업(파일 전용)
$ php artisan backup:run --only-files
백업(알림 비활성화)
$ php artisan backup:run --disable-notifications
백업(DB만 알림 사용 안함)
$ php artisan backup:run --only-db --disable-notifications
백업(파일만 알림 사용 안함)
$ php artisan backup:run --only-files --disable-notifications
덤
로컬(storage/app/)에 장기적으로 저장하면 용량 문제 등에서 다른 장소에 저장하는 것이 좋을지도 모릅니다. 이번에 새로운 저장처로 AWS S3에서 설정하는 방법도 소개합니다.
※AWS, S3 버킷의 준비 방법은 생략하고 있습니다.
자세히 알고 싶은 분은 이쪽을 참조하면 좋다고 생각합니다.
참고: Laravel을 백업! 정기적으로 DB와 파일을 AWS에 저장
AWS 정보를 구성 파일에 설명
AWS에서 얻은 정보를 .env
파일에 다음을 추가
.envAWS_DEFAULT_REGION=****** // リージョンを記載
AWS_BUCKET=****** // バケット名を記載
AWS_ACCESS_KEY_ID=****** //アクセスキーを記載
AWS_SECRET_ACCESS_KEY=****** //シークレットアクセスキーを記載
스토리지 패키지 설치
S3에 업로드할 수 있도록 패키지를 설치합니다.
composer require league/flysystem-aws-s3-v3:"^1.0"
저장 위치 변경
local에서 s3으로 변경합니다.
config/backup.php'destination' => [
(省略)
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
// 'local',
's3',
],
],
백업 실행
$ php artisan backup:run --only-files
Determining files to backup...
Zipping 231 files and directories...
Created zip containing 231 files and directories. Size is 2.29 MB
Copying zip to disk named s3...
Successfully copied zip to disk named s3.
Backup completed!
S3을 확인하면 ...
제대로 백업 잡혀있었습니다!
참고처
$ composer require spatie/laravel-backup
$ php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
Copied File [/vendor/spatie/laravel-backup/config/backup.php] To [/config/backup.php]
Copied Directory [/vendor/spatie/laravel-backup/resources/lang] To [/resources/lang/vendor/backup]
Publishing complete.
<?php
return [
'backup' => [
(省略)
'destination' => [
(省略)
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
'local', //ここで設定
],
],
(省略)
],
];
<?php
return [
(省略)
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
(省略)
],
];
'notifications' => [
// 省略
'mail' => [
// 通知先のメールアドレス
'to' => '[email protected]',
// 送信元
'from' => [
'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
],
백업 명령을 확인한 후 실행하고 싶습니다.
백업 명령 확인
$ php artisan list
backup
backup:clean Remove all backups older than specified number of days in config.
backup:list Display a list of all backups.
backup:monitor Monitor the health of all backups.
backup:run Run the backup.
백업(모두)
$ php artisan backup:run
Starting backup...
Dumping database LaravelBackup...
Determining files to backup...
Zipping 228 files and directories...
Created zip containing 228 files and directories. Size is 618.99 KB
Copying zip to disk named local...
Successfully copied zip to disk named local.
Backup completed!
성공하면
storage/app/〇〇
에 zip 파일이 생성됩니다. (〇〇은 .env
파일의 APP_NAME을 포함해야합니다)백업(DB 전용)
$ php artisan backup:run --only-db
백업(파일 전용)
$ php artisan backup:run --only-files
백업(알림 비활성화)
$ php artisan backup:run --disable-notifications
백업(DB만 알림 사용 안함)
$ php artisan backup:run --only-db --disable-notifications
백업(파일만 알림 사용 안함)
$ php artisan backup:run --only-files --disable-notifications
덤
로컬(storage/app/)에 장기적으로 저장하면 용량 문제 등에서 다른 장소에 저장하는 것이 좋을지도 모릅니다. 이번에 새로운 저장처로 AWS S3에서 설정하는 방법도 소개합니다.
※AWS, S3 버킷의 준비 방법은 생략하고 있습니다.
자세히 알고 싶은 분은 이쪽을 참조하면 좋다고 생각합니다.
참고: Laravel을 백업! 정기적으로 DB와 파일을 AWS에 저장
AWS 정보를 구성 파일에 설명
AWS에서 얻은 정보를 .env
파일에 다음을 추가
.envAWS_DEFAULT_REGION=****** // リージョンを記載
AWS_BUCKET=****** // バケット名を記載
AWS_ACCESS_KEY_ID=****** //アクセスキーを記載
AWS_SECRET_ACCESS_KEY=****** //シークレットアクセスキーを記載
스토리지 패키지 설치
S3에 업로드할 수 있도록 패키지를 설치합니다.
composer require league/flysystem-aws-s3-v3:"^1.0"
저장 위치 변경
local에서 s3으로 변경합니다.
config/backup.php'destination' => [
(省略)
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
// 'local',
's3',
],
],
백업 실행
$ php artisan backup:run --only-files
Determining files to backup...
Zipping 231 files and directories...
Created zip containing 231 files and directories. Size is 2.29 MB
Copying zip to disk named s3...
Successfully copied zip to disk named s3.
Backup completed!
S3을 확인하면 ...
제대로 백업 잡혀있었습니다!
참고처
AWS_DEFAULT_REGION=****** // リージョンを記載
AWS_BUCKET=****** // バケット名を記載
AWS_ACCESS_KEY_ID=****** //アクセスキーを記載
AWS_SECRET_ACCESS_KEY=****** //シークレットアクセスキーを記載
composer require league/flysystem-aws-s3-v3:"^1.0"
'destination' => [
(省略)
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
// 'local',
's3',
],
],
$ php artisan backup:run --only-files
Determining files to backup...
Zipping 231 files and directories...
Created zip containing 231 files and directories. Size is 2.29 MB
Copying zip to disk named s3...
Successfully copied zip to disk named s3.
Backup completed!
Reference
이 문제에 관하여([Laravel] Git을 사용하지 않고 애플리케이션을 쉽게 백업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamakiiii/items/fb284a84655e8d943586텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)