modules/admin-full: fix backup generation
This commit is contained in:
parent
305b25486a
commit
c897d47af2
1 changed files with 21 additions and 6 deletions
|
@ -12,6 +12,7 @@ You may obtain a copy of the License at
|
||||||
|
|
||||||
$Id$
|
$Id$
|
||||||
]]--
|
]]--
|
||||||
|
|
||||||
module("luci.controller.admin.system", package.seeall)
|
module("luci.controller.admin.system", package.seeall)
|
||||||
|
|
||||||
function index()
|
function index()
|
||||||
|
@ -105,9 +106,12 @@ function action_packages()
|
||||||
end
|
end
|
||||||
|
|
||||||
function action_backup()
|
function action_backup()
|
||||||
|
local sys = require "luci.sys"
|
||||||
|
local fs = require "luci.fs"
|
||||||
|
|
||||||
local reset_avail = os.execute([[grep '"rootfs_data"' /proc/mtd >/dev/null 2>&1]]) == 0
|
local reset_avail = os.execute([[grep '"rootfs_data"' /proc/mtd >/dev/null 2>&1]]) == 0
|
||||||
local restore_cmd = "tar -xzC/ >/dev/null 2>&1"
|
local restore_cmd = "tar -xzC/ >/dev/null 2>&1"
|
||||||
local backup_cmd = "tar -cz %s 2>/dev/null"
|
local backup_cmd = "tar -czT %s 2>/dev/null"
|
||||||
|
|
||||||
local restore_fpi
|
local restore_fpi
|
||||||
luci.http.setfilehandler(
|
luci.http.setfilehandler(
|
||||||
|
@ -132,11 +136,22 @@ function action_backup()
|
||||||
luci.template.render("admin_system/applyreboot")
|
luci.template.render("admin_system/applyreboot")
|
||||||
luci.sys.reboot()
|
luci.sys.reboot()
|
||||||
elseif backup then
|
elseif backup then
|
||||||
local reader = ltn12_popen(backup_cmd:format(_keep_pattern()))
|
local filelist = "/tmp/luci-backup-list.%d" % os.time()
|
||||||
|
|
||||||
|
sys.call(
|
||||||
|
"( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf " ..
|
||||||
|
"/lib/upgrade/keep.d/* 2>/dev/null) -type f 2>/dev/null; " ..
|
||||||
|
"opkg list-changed-conffiles ) | sort -u > %s" % filelist
|
||||||
|
)
|
||||||
|
|
||||||
|
if fs.access(filelist) then
|
||||||
|
local reader = ltn12_popen(backup_cmd:format(filelist))
|
||||||
luci.http.header('Content-Disposition', 'attachment; filename="backup-%s-%s.tar.gz"' % {
|
luci.http.header('Content-Disposition', 'attachment; filename="backup-%s-%s.tar.gz"' % {
|
||||||
luci.sys.hostname(), os.date("%Y-%m-%d")})
|
luci.sys.hostname(), os.date("%Y-%m-%d")})
|
||||||
luci.http.prepare_content("application/x-targz")
|
luci.http.prepare_content("application/x-targz")
|
||||||
luci.ltn12.pump.all(reader, luci.http.write)
|
luci.ltn12.pump.all(reader, luci.http.write)
|
||||||
|
fs.unlink(filelist)
|
||||||
|
end
|
||||||
elseif reset then
|
elseif reset then
|
||||||
luci.template.render("admin_system/applyreboot")
|
luci.template.render("admin_system/applyreboot")
|
||||||
luci.util.exec("mtd -r erase rootfs_data")
|
luci.util.exec("mtd -r erase rootfs_data")
|
||||||
|
|
Loading…
Reference in a new issue