編輯:系統備份
安卓的系統備份在很多場合下可能會用到,下面這個python的腳本,可以用來備份整個的data分區:將所有data分區的文件和目錄打包到data.zip,並生成recovery的專用edify腳本到update-script.sh。當然,簡單的修改下腳本的備份路徑就可以備份system分區了,如果再加上幾行代碼,就可以備份boot,recovery,uboot等等分區,不過這要根據不同的分區來寫不同的備份代碼:
backup.py
import sys
import os
from os.path import join
from os import path
import zipfile
from zipfile import ZipFile
def packdir(dir,z,dirinfo,emptydirs,linkinfo):
dirs = os.listdir(dir)
if not dirs:
emptydirs.append(dir)
else:
for d in dirs:
absdir = join(dir,d)
if not path.islink(absdir) and (path.isdir(absdir) or path.isfile(absdir)):
break
else:
emptydirs.append(dir)
for d in dirs:
absdir = join(dir,d)
st = os.lstat(absdir)
info = [st.st_uid,st.st_gid,st.st_mode]
if path.islink(absdir):
info.append(absdir)
linkdir = os.readlink(absdir)
linkinfo[linkdir] = info
elif path.isdir(absdir):
dirinfo[absdir] = info
packdir(absdir,z,dirinfo,emptydirs,linkinfo)
elif path.isfile(absdir):
dirinfo[absdir] = info
os.utime(absdir,(1403408099,1403408099))
z.write(absdir)
else:
print 'file type unknow %s'%(absdir,)
zi = ZipFile('data.zip','w',zipfile.ZIP_DEFLATED)
dirinfo = {}
emptydirs = []
linkinfo = {}
packdir('/data',zi,dirinfo,emptydirs,linkinfo)
f = open('update-script.sh','wb');
f.write('ifelse(is_mounted("/data"),unmount("/data"),0);\n')
f.write('format("ext4", "EMMC", "/dev/block/data", "0", "/data");\n')
f.write('mount("ext4", "EMMC", "/dev/block/data", "/data");\n')
f.write('package_extract_dir("data", "/data");\n')
mkdir_cmd = 'run_program("/sbin/busybox","mkdir","-p","'
mkdir_cmd += '","'.join(emptydirs)
mkdir_cmd += '");\n'
f.write(mkdir_cmd)
for key in dirinfo.keys():
info = dirinfo[key]
info = list(info)
info.append(key)
info = tuple(info)
set_perm = 'set_perm(%d, %d, %d, "%s");\n'%info
f.write(set_perm)
for key in linkinfo:
info = linkinfo[key]
info = tuple(info)
symlink = 'symlink("%s", "%s");\n'%(key,info[3])
set_perm = 'run_program("/sbin/busybox","chown","-h","install:install","%s");\n'%(info[3],)
f.write(symlink)
f.write(set_perm)
f.write('unmount("/data");')
f.close()
update_script='update-script.sh'
os.utime(update_script,(1403408099,1403408099))
zi.write(update_script)
zi.close()
先要有root權限,另外,該腳本的運行依賴於python-for-android。
然後要將該腳本打包到apk裡,或者在adb shell上通過命令行的方式執行。
三星S4電信版怎麼EFS備份和恢復備份圖文教程
剛買回來的三星S4,大家第一件事是干嘛呢?刷機還是Recovery呢?這些都不是最重要的,EFS備份才是目前最主要
安卓系統怎麼刪除備份的系統
這裡需要強調的是刪除備份系統需要使用第三方Recovery;當然,如果你之前備份過系統的話相信你已經刷入了一個第三方Recovery!首先,進入recov
手機短信怎麼備份如何將一些重要的短信保存下來
手機短信怎麼備份?短信是伴隨數字移動通信系統而產生的一種電信業務,通過移動通信系統的信令信道和信令網,傳送文字或數字短信息,屬於一種非實時的、非語音的數據通信業務。有時候
安卓efs是什麼意思,efs備份教程
很多朋友不知道efs是什麼意思,efs是加密文件系統,很多用戶說按照官方教程刷機完以後手機沒有信號,這就是efs信息丟失導致的,所以說這個文件非常重要,刷機前必須要備份,