/ резервное копирование-сайт-на-яндекс-диск



Место для хранения Яндекс.Диска

Вы получаете 10 ГБ места в качестве как только вы зарегистрируетесь на Яндекс.Диске.

При использовании веб-версии вы можете найти оставшееся дисковое пространство в нижнем левом углу страницы.

Что будет, если у меня закончится место на Яндекс.Диске?

Когда на вашем Яндекс.Диске больше нет места, доступ к Яндекс. .Диск ограничен:
  • Вы не можете загружать новые файлы.
  • Вы не можете делиться файлами или создавать общие папки.
  • Файлы, которыми вы поделились ранее, становятся недоступными по общедоступным ссылкам.
  • Вы не можете смотреть видео.
  • API доступ приостановлен.

Остальные действия с файлами не блокируются. Вы по-прежнему можете просматривать файлы, загружать их на свой компьютер, редактировать, перемещать и удалять.

Чтобы полностью восстановить все функции Яндекс.Диска, удалите ненужные файлы или купите дополнительное место для хранения.
Совет. Во избежание потери файлов загрузите их на свой компьютер перед их удалением.

Я вижу сообщение «Нет места на вашем Диск », но все равно остается много свободного места

Иногда это сообщение можно увидеть в Яндекс.Диске. Кроме того, фактическое пространство, занимаемое файлами на Яндекс.Диске, может быть меньше занимаемого места, указанного индикатором (в нижнем левом углу страницы Яндекс.Диска). Это связано с тем, что файлы, которые вы переместили в корзину на странице Яндекс.Диска или удалили в Яндекс.Диск для ПК, по-прежнему занимают место на вашем Яндекс.Диске. Они будут автоматически удалены через 30 дней. Если у вас заканчивается место, очистите корзину перед этим.

Другая возможная причина — вы используете разные учетные записи в браузере и в программе Яндекс.Диск на рабочем столе. Убедитесь, что учетная запись, которую вы используете в браузере, совпадает с учетной записью, которую вы используете в настольной программе Яндекс.Диск.

Освободите место на Яндекс.Диске

Вот что вы можете сделать, чтобы освободить место на Яндекс.Диске:

  • Очистить корзину — файлы и папки, перемещенные в корзину, занимают место на диске.
  • Приобретите дополнительное место.
  • Используйте сертификат Яндекс.Диска или промокод.
  • Участвуйте в акциях, организуемых Яндекс.Диском или нашими партнерами.

php
define (‘ARCHIVE_NAME’, ‘site.tar.gz’);
define (‘SITE_ARCHIVE_PATH’, ‘/var/tmp/site.tar.gz’);
define (‘DB_BACKUP_PATH’, ‘/var/www/your_site_database_dump_path.sql’);
define (‘SITE_ROOT’, ‘/var/www/’);
define (‘BASH_SCRIPT_PATH’, ‘./create_site_archive.sh’);
define (‘UPLOAD_API_URL’, ‘https://cloud-api.yandex.net/v1/disk/resources/upload?’);
define (‘API_TOKEN’, ‘API_TOKEN’);
define (‘BACKUP_FOLDER_IN_YANDEX_DISK’, ‘/BACKUP_FOLDER_IN_YANDEX_DISK/’);
define (‘REQUIRED_AMOUNT_OF_FREE_SPACE_IN_GB’, 5);
define (‘API_DISK’, ‘https://cloud-api.yandex.net/v1/disk/’);
define (‘NUMBER_OF_BACKUPS_STORED’, 100);
/*
* Подготовка архива сайта:
* создание бекапа БД в директории/var/www, а после архивации/var/www
* */
function createSiteArchive () {
$ currentDir = getcwd ();
chdir (SITE_ROOT);
if (! is_executable (BASH_SCRIPT_PATH)) {
throw new Exception (‘Файл должен быть исполняемым:’. BASH_SCRIPT_PATH);
}
shell_exec (BASH_SCRIPT_PATH);
chdir ($ currentDir);
if (! file_exists (DB_BACKUP_PATH)) {
throw new Exception (‘Файл резервной копии БД не существует в’. DB_BACKUP_PATH);
}
if (! file_exists (SITE_ARCHIVE_PATH)) {
throw new Exception (‘Архив сайта не существует в’. SITE_ARCHIVE_PATH);
}
}
/*
* Загрузка архива на Яндекс.Диск
* */
функция uploadArchiveToYandexDi sk ($ date) {
echo » nЗагрузить на Яндекс.Диск start:». date («h: i: sa»);
$ destinationPathInYandexDisk = BACKUP_FOLDER_IN_YANDEX_DISK. $ date. «/»;
createFolderOnYandexDisk ($ destinationPathInYandexDisk);
//Запрашиваем URL для загрузки .
$ ch = curl_init (UPLOAD_API_URL .’path = ‘. urlencode ($ destinationPathInYandexDisk. basename (SITE_ARCHIVE_PATH)) );
curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (‘Авторизация: OAuth’. API_TOKEN));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false);
$ res = curl_exec ($ ch);
curl_close ($ ch);
$ res = json_decode ($ res, true);
if (! empty ($ r es [‘error’])) {
throw new Exception (» nОшибка при получении URL загрузки для загрузки архива на Яндекс.Диск n «. $ res [‘сообщение’]);
}
$ fp = fopen (SITE_ARCHIVE_PATH, ‘r ‘);
$ ch = curl_init ($ res [‘ href ‘]);
curl_setopt ($ ch, CURLOPT_PUT, true);
curl_setopt ($ ch, CURLOPT_UPLOAD, true);
curl_setopt ($ ch, CURLOPT_INFILESIZE, размер файла (SITE_ARCHIVE_PATH));
curl_setopt ($ ch, CURLOPT_INFILE, $ fp);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false);
curl_exec ($ ch);
$ http_code = curl_getinfo ($ ch, CURLINFO_HTTP_CODE);
curl_ закрыть ($ ch);
if ($ http_code! = 201) {
выбросить новое исключение ( « nОшибка при загрузке архива на Яндекс Диск»);
}
echo » nЗагрузить на Яндекс.Диск конец:». date («h: i: sa»);
}
function createFolderOnYandexDisk ($ path) {
$ ch = curl_init (‘https://cloud-api.yandex.net/v1/disk/resources /? путь = ‘. urlencode ($ path));
curl_setopt ($ ch, CURLOPT_PUT, true);
curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (‘Авторизация: OAuth’. API_TOKEN));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false) ;
$ res = curl_exec ($ ch);
curl_close ($ ch);
}
function checkBackupSuccessfulyUploadedInYandexDisk ($ findableFolderName, $ requiredArchiveSize) {
$ findablePath = BACKUP_FOLDER_IN_YANDEX_DISK. $ findableFolderName. ‘/’;
$ fields = ‘_embedded.items.name, _embedded.items.type, _embedded.items.size ‘;
$ limit = 100;
$ ch = curl_init (‘https ://cloud-api.yandex.net/v1/disk/resources? path = ‘. urlencode ($ findablePath).’ & fields = ‘. $ fields.’ & limit = ‘. $ limit);
curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (‘Авторизация: OAuth’. API_TOKEN));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false) ;
$ res = curl_exec ($ ch);
curl_close ($ ch);
$ res = json_decode ($ res, true);
if (! empty ($ res [‘error’])) {
throw new Exception (» nФайл проверки ошибок в Яндекс .Диск по пути: «. $ findablePath. » n». $ res [‘сообщение’]);
}
if (count ($ res [‘_ embedded ‘] [‘ items ‘]) == 0 ||
$ res [‘ _ embedded ‘] [‘ items ‘] [0] [‘ type ‘]! =’ File ‘||
$ res [‘ _ embedded ‘ ] [‘items’] [0] [‘name’]! = ARCHIVE_NAME ||
$ res [‘ _embedded ‘] [‘ items ‘] [0] [‘ size ‘]! = $ requiredArchiveSize)
{
throw new Exception (‘Архив’. ARCHIVE_NAME. ‘в Яндекс. Диск не найден (или тип, имя и размер не соответствуют архивному файлу сервера) ‘);
}
}
/*
* Проверка достаточности свободного места на Я.Диске
* */
функция checkFreeSpaceOnYandexDiskExists () {
$ freeSpaceInGigaByte = getFreeSpaceOnYandexDisk ();
if ($ freeSpaceInGigaByte
throw new Exception («Недостаточно свободного места: $ freeSpaceInGigaByte Gb, нужно больше»);
}
echo » nДостаточно свободного места: $ freeSpaceInGigaByte Gb n»;
}
/*
* Получение информации, сколько еще свободных мест на Яндекс.Диске (в Гб)
* */
function getFreeSpaceOnYandexDisk () {
$ ch = curl_init (API_DISK);
curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (‘Авторизация: OAuth’. API_TOKEN));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false);
$ res = curl_exec ($ ch) ;
curl_close ($ ch);
$ res = json_decode ($ res, true);
if (! empty ($ res [‘error’])) {
echo $ res [‘message’];
throw new Exception («Ошибка при проверке свободного места на Яндекс Диске»);
}
$ totalSpace = $ res [‘total_space’];
$ usedSpace = $ res [‘used_space’] ;
$ freeSpaceInByte = $ totalSpace — $ usedSpace;
$ freeSpaceInGigaByte = $ freeSpaceInByte/(1024 * 1024 * 1024);
возвратный раунд ($ freeSpaceInGigaByte, 2);
}
функция cleanOldArchiveFromYandexDisk () {
$ folderNamesToDelete = getOldFolderNamesToDelete ();
if (empty ($ folderNamesToDelete)) {
return;
}
foreach ( $ folderNamesToDelete как & $ value) {
deleteFolderOnYandexDisk ($ value);
}
waitUntilFoldersMoveToTrash ();
cleanTrashFolderOnYandexDisk ();
}
function waitUntilFoldersMoveToTrash () {
sleep (60);
}
function getOldFolderNamesToDelete () {
$ ch = curl_init (‘ https://cloud-api.yandex.net/v1/disk/resources?path= ‘. urlencode (BACKUP_FOLDER_IN_YANDEX_DISK). ‘& fields = _embedded.items.name & limit = 200’);
curl_setopt ($ ch, CURLOPT_HTTPHEADER, массив (‘Авторизация: OAuth’. API_TOKEN));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false);
$ res = curl_exec ($ ch) ;
curl_close ($ ch);
$ res = json_decode ($ res, true);
if (! empty ($ res [‘error’])) {
throw new Exception («Ошибка получения старых папок на Яндекс.Диске:». $ res [‘message’]);
}
if (count ($ res [‘_ embedded’] [‘items’]) == 0) {
return array ();
}
$ existsFol derNames = array_reverse ($ res [‘_ embedded’] [‘items’]);
$ folderNamesForDelete = array ( );
for ($ i = 0; $ i
if ($ i> = NUMBER_OF_BACKUPS_STORED) {
array_push ($ folderNamesForDelete, $ existsFolderNames [$ i] [‘name’]);
}
}
return $ folderNamesForDelete;
}
функция deleteFolderOnYandexDisk ($ deleteFolder) {
$ deleteFolderPath = BACKUP_FOLDER_IN_YANDEX_DISK. $ deleteFolder. ‘/’;
$ ch = curl_init (‘https://cloud-api.yandex.net/v1/disk/resources?path=’. urlencode ($ deleteFolderPath). ‘& постоянно = true’ );
curl_setopt ($ ch, CURLOPT_CUSTOMREQUEST, ‘DELETE’);
curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (‘Авторизация: OAuth’. API_TOKEN));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false);
curl_exec ($ ch);
$ http_code = curl_getinfo ($ ch, CURLINFO_HTTP_CODE);
curl_close ($ ch);
if (! in_array ($ http_code, array (202, 204))) {
throw new Exception (‘Не удалось удалить старую папку архива’. $ deleteFolder);
}
echo ‘Папка’. $ deleteFolderPath. ‘ на Яндекс.Диске удалена ‘;
}
функция cleanTrashFolderOnYandexDisk () {
$ ch = curl_init (API_DISK .’trash/resources ‘);
curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (‘Авторизация: OAuth’. API_TOKEN));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ ch, CURLOPT_HEADER, false);
curl_setopt ($ ch, CURLOPT_CUSTOMREQUEST, «DELETE»);
curl_exec ($ ch);
$ http_code = curl_getinfo ($ ch, CURLINFO_HTTP_CODE );
curl_close ($ ch);
if ($ http_co de! = 202) {
throw new Exception (‘Ошибка при очистке корзины мусора на Яндекс Диске’);
}
echo » nПапка мусора на Яндекс Диске успешно очищена»;
}
function cleanArchiveFromTmp () {
if (file_exists (SITE_ARCHIVE_PATH)) {
unlink (SITE_ARCHIVE_PATH);
}
if (file_exists (DB_BACKUP_PATH)) {
unlink (DB_BACKUP_PATH);
}
if (file_exists (SITE_ARCHIVE_PATH) || file_exists (DB_BACKUP_PATH)) {
throw new Exception (‘После отправки резервной копии на Яндекс. Диск, не удалось удалить локальные архивы ‘);
}
echo » nАрхив сайта и дамп БД на локальном сервере успешно очищены»;
}
function getLocalCreatedArchiveSize () {
if (! file_exists (SITE_ARCHIVE_PATH)) {
throw new Exception (‘Файл архива сайта не существует в’. SITE_ARCHIVE_PATH);
}
$ archiveSize = Размер файла (SITE_ARCHIVE_PATH);
if ($ archiveSize
throw new Exception (‘Архив сайта не имеет размера’. SITE_ARCHIVE_PATH);
}
return $ archiveSize;
}
function run () {
echo » n»;
//запомним название папки , т.к. загрузка архива может затянуться на несколько часов
$ backupFolderName = date (‘Ym-d’);
попробуйте {
cleanArchiveFromTmp ();
checkFreeSpaceOnYandexDiskExists ();
createSiteArchive ();
uploadArchiveToYandexDisk ($ backupFolderName) ;
checkBackupSuccessfulyUploadedInYandexDisk ($ backupFolderName, getLocalCreatedArchiveSize ());
cleanOldArchiveFromYandexDisk ();
cleanArchiveFromTmp ();
}
catch (исключение $ e) {
echo $ e-> getMessage ();
}
echo » n»;
}
run ();
Оцените статью
clickpad.ru
Добавить комментарий