Подготовка архива с файлами

Станислав
На сайте с 27.12.2009
Offline
258
490

Подскажите где почитать для реализации следующей задумки, если это конечно возможно.

На файловом сайте куча файлов, возможность бэкапить все это дело и сливать на железку становиться все сложнее и сложнее.

Немного подумав, пришла такая мысль в голову.

Я могу получить ссылки на все новые файлы, скажем списком

либо так

site.ru/file/new_file.zip

site.ru/file/new_file_2.zip

site.ru/file/new_file_3.zip

либо так

/home/.../file/new_file.zip

/home/.../file/new_file_2.zip

/home/.../file/new_file_3.zip

собственно это не столь важно, так как ссылки можно переделать как угодно.

Задача в следующем

К примеру есть файл .txt или .csv со списком всех новых файлов появившихся с момента последнего сканирования директории.

file.csv

site.ru/file/new_file.zip
site.ru/file/new_file_2.zip
site.ru/file/new_file_3.zip

Возможно ли средствами PHP перебрать массив ссылок и заархивировать их в один архив?

Т.е. интересует как создать сам обработчик и возможно ли это?

Уже разобрался =)

Мы там, где рады нас видеть.
W
На сайте с 17.02.2012
Offline
8
#1

Скрипт в паблике видел где-то

Joker-jar
На сайте с 26.08.2010
Offline
171
#2

Предлагаю следующую реализацию: раз в день скрипт бекапит только те файлы, которые были созданы или изменены в текущие сутки (то бишь, накопительный бекап). Первого и пятнадцатого числа каждого месяца делается полный бекап. В итоге, чтоб восстановиться, допустим на 18-е число, нужно распаковать архив за 15 число (полный бекап) и после этого последовательно в то же место распаковать накопительные бекапы за 16, 17 и 18 числа.

Пример реализации на bash:

#!/bin/bash

# Папка, куда будут складываться бекапы
bdir=/var/www/backup
btime=$(date +%Y-%m-%d-%H-%M-%S)

# Удаляем все бекапы старше 90 дней
find $bdir -mtime +90 -delete

# Дамп базы данных
mysqldump -uUSER -pPASSWORD --databases DB | gzip > $bdir/site-mysql-dump-$btime.sql.gz

# Если 1 или 15 число месяца
if [[ $(date '+%d') = '01' || $(date '+%d') = '15' ]] ; then
find /var/www/site/html/ -type f -and -not -wholename '/var/www/site/html/cache*' -and -not -wholename '/var/www/site/html/phpmyadmin*' -print0 | xargs -0 tar -zcf $bdir/site-content-backup-full-$btime.tgz
else
find /var/www/site/html/ -type f -mtime 0 -and -not -wholename '/var/www/site/html/cache*' -and -not -wholename '/var/www/site/html/phpmyadmin*' -print0 | xargs -0 tar -zcf $bdir/site-content-backup-partial-$btime.tgz
fi

# В данном примере файлы сайта лежат в директории /var/www/site/html/. Показано также, как исключить папки, которые не нужно бекапить (-and -not -wholename '/var/www/site/html/cache*' -and -not -wholename '/var/www/site/html/phpmyadmin*')
Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

Используйте duplicity — он делает инкрементальные бэкапы только изменённых файлов. Причём может шифровать их и заливать сразу на яндекс-диск. 21 век, хватит уже колхозить со скриптами бэкапа :D

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Станислав
На сайте с 27.12.2009
Offline
258
#4

спс, но я уже все сделал =)

Joker-jar, тоже норм, но я на пыхе сделал так как у меня версия 5.2 и там уже встроенный ZipArchive, пору строк кода и архивирует на ура + всякие махинации с архивом можно проводить, вобщем все то что и нужно. А файлы нужно было подготавливать по запросу, т.е. на кнопку клацнул и архив подготовился, на другую клацнул и пошла загрузка архива =)

21 век, хватит уже колхозить со скриптами бэкапа :D

для саморазвития очень полезно ☝

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий