如何完全備份android系統上的system分區和data分區,androiddata
安卓的系統備份在很多場合下可能會用到,下面這個python的指令碼,可以用來備份整個的data分區:將所有data分區的檔案和目錄打包到data.zip,並產生recovery的專用edify指令碼到update-script.sh。當然,簡單的修改下指令碼的備份路徑就可以備份system分區了,如果再加上幾行代碼,就可以備份boot,recovery,uboot等等分區,不過這要根據不同的分區來寫不同的備份代碼:
backup.py
import sysimport osfrom os.path import joinfrom os import pathimport zipfilefrom zipfile import ZipFiledef 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上通過命令列的方式執行。
安卓data,system,sd分區什意思
你好,我來補充下吧。
data:資料
也稱為使用者資料,資料分區包含使用者的資料:連絡人,資訊,設定和應用程式。
system:系統
這個分區主要包含整個作業系統,包括使用者介面,以及所有的系統應用,被預裝的裝置。
sd:sdcard
這就是我們自己買來安裝上去的記憶卡。
sd卡分區,指的是分出一部分sd卡記憶體到手機記憶體,以解決手機機身記憶體不足的困擾!
sd卡的分區可以通過recovery模式中的內建資料分割函數或者一些其他分區軟體!再利用手機端軟體聯絡分區即可。安卓可用Link2SD!
手機的data分區 system分區 sdcard分區各有什用處
data資料分區,system系統磁碟分割這兩個是rom的,sdcard就是記憶卡了。不知道你用的什麼手機,只能這樣回答了。