Rumah > Artikel > hujung hadapan web > Membawa anda langkah demi langkah untuk membangunkan alat sandaran telefon mudah alih menggunakan Node.js dan adb
Artikel ini akan berkongsi dengan anda pengalaman praktikal Nod dan memperkenalkan cara membangunkan alat sandaran telefon mudah alih menggunakan Node.js dan adb. Saya harap ia akan membantu semua orang.
Dengan perkembangan teknologi, definisi gambar dan video yang kita ambil dalam kehidupan seharian kita terus bertambah baik, tetapi ini juga mempunyai kelemahan utama, iaitu, mereka saiz juga semakin besar. Saya masih ingat apabila saya mula menggunakan telefon pintar, foto hanya akan menjadi 2-5MB
, tetapi kini foto telah mencapai 15-20MB
, atau lebih besar.
Ruang storan pada telefon mudah alih kami adalah terhad. Bagaimanakah kami menyandarkan foto dan video ini untuk mengosongkan ruang pada telefon mudah alih kami?
Jadi, pada mulanya, saya menyimpan semua data ini dalam awan album foto Walaupun masalah menyimpan data ini telah diselesaikan, masalah baru juga muncul, seperti kekangan saiz muat naik dan keperluan untuk Menduduki latar belakang. membawa kepada peningkatan penggunaan kuasa dan pengiklanan.
Kemudian saya berhenti menggunakannya dan menulis skrip untuk menyandarkan data, jadi artikel ini keluar.
Saya menggunakan Node.js
dan adb
untuk membuat skrip ini dan menamakannya MIB
Alat ini dilaksanakan dengan menggunakan adb
nyahpepijat pada telefon mudah alih dan membaca maklumat fail serta menyalin dan mengalihkan fail dalam telefon bimbit melalui arahan shell
.
Saya melukis carta alir ringkas MIB
Pertama, fail konfigurasi akan dibaca daripada fail konfigurasi (jika tiada fail konfigurasi, fail konfigurasi akan dibuat). Dapatkan laluan nod yang perlu disandarkan dan lakukan operasi sandaran fail. sehingga hujung nod.
Pemasangan persekitaran yang diperlukan
Muat turun pakej adb
, digunakan untuk melaksanakan pelbagai operasi peranti
Muat turunNode.js
, saya percaya semua orang sudah mempunyai ini pada komputer mereka
Pasang pustaka bergantung
fs-extra
: fs
pustaka Node
prompts
pengkapsulan sekunder modul: Node
Pustakawinston
untuk interaksi pada baris arahan: Node
Pustaka untuk merekod log skripdisebabkan kod sumber projek Agak terlalu banyak, saya hanya meletakkan bahagian kod utama di sini
Rakan-rakan yang berminat boleh pergi ke
github
untuk melihat kod sumber projek github.com/QC2168/mib
Baca fail konfigurasi
export const getConfig = (): ConfigType => { if (existConf()) { return readJsonSync(CONFIG_PATH); } // 找不到配置文件 return createDefaultConfig(); };
Apabila melaksanakan skrip, pilih peranti yang perlu disandarkanID
. Dan nyatakan peranti apabila melaksanakan perintah adb
(async () => { const device: string | boolean = await selectDevice(); if (device) MIB(); })(); export const selectDevice = async ():Promise<string|false> => { // 获取设备 const list: devicesType[] = devices(); if (list.length === 0) { log("当前无设备连接,请连接后再执行该工具", "warn"); return false; } const result = list.map((i) => ({ title: i.name, value: i.name })); const { value } = await prompts({ type: "select", name: "value", message: "please select your device", choices: result, }); currentDeviceName = value; return currentDeviceName; };
Traverse nod sandaran
Selepas memilih peranti, masukkan traversal maklumat nod, dan Laksanakan salinan fail ke laluan yang ditentukan (output
atribut dalam fail konfigurasi)
const MIB = () => { // 获取配置文件 const { backups, output } = getConfig(); // 判断备份节点是否为空 if (backups.length === 0) { log("当前备份节点为空", "warn"); log("请在配置文件中添加备份节点", "warn"); } if (backups.length > 0) { isPath(output); // 解析备份路径最后一个文件夹 backups.forEach((item: SaveItemType) => { log(`当前执行备份任务:${item.comment}`); const arr = item.path.split("/").filter((i: string) => i !== ""); const folderName = arr.at(-1); const backupDir = pathRepair(item.path); // 备份目录 // 判断节点内是否有备份目录 // 拼接导出路径 const rootPath = pathRepair(pathRepair(output) + folderName); const outputDir = item.output ? item.output && pathRepair(item.output) : rootPath; // 判断备份路径是否存在 if (!isPathAdb(backupDir)) { log(`备份路径:${backupDir} 不存在已跳过`, "error"); } else { // 判断导出路径 isPath(outputDir); backup(backupDir, outputDir, item.full); } }); } log("程序结束"); }; // 细化需要备份的文件,进入备份队列中 const backup = (target: string, output: string, full: boolean = false) => { if (!full) { // 备份非备份的文件数据 // 获取手机中的文件信息,对比本地 const { backupQueue } = initData(target, output); // 计算体积和数量 computeBackupSize(backupQueue); // 执行备份程序 move(backupQueue, output); } else { // 不文件对比,直接备份 moveFolder(target, output); } }; // 移动待备份文件队列中的文件 const move = (backupQueue: FileNodeType[], outputDir: string): void => { if (backupQueue.length === 0) { log("无需备份"); return; } for (const fileN of backupQueue) { log(`正在备份${fileN.fileName}`); try { const out: string = execAdb( `pull "${fileN.filePath}" "${outputDir + fileN.fileName}"`, ); const speed: string | null = out.match(speedReg) !== null ? out.match(speedReg)![0] : "读取速度失败"; log(`平均传输速度${speed}`); } catch (e: any) { log(`备份${fileN.fileName}失败 error:${e.message}`, "error"); } } };
USB
Sambungkan Data sandaran untuk memasang secara global mib
.
npm i @qc2168/mib -g
Fail skrip konfigurasi
Untuk penggunaan kali pertama, anda perlu mencipta fail .mibrc
baharu dalam direktori pengguna dan tetapkan kandungan parameter yang sepadan.
{ "backups": [ { "path": "/sdcard/MIUI/sound_recorder/call_rec", "comment": "通话录音" }, { "path": "/sdcard/DCIM/Camera", "comment": "本地相册" }, { "path": "/sdcard/DCIM/Creative", "comment": "我的创作" }, { "path": "/sdcard/Pictures/weixin", "comment": "微信相册" }, { "path": "/sdcard/tencent/qq_images", "comment": "QQ相册" }, { "path": "/sdcard/Pictures/知乎", "comment": "知乎" }, { "path": "/sdcard/tieba", "comment": "贴吧" }, { "path": "/sdcard/DCIM/Screenshots", "comment": "屏幕截屏" }, { "path": "/sdcard/DCIM/screenrecorder", "comment": "屏幕录制" }, { "path": "/sdcard/MIUI/sound_recorder", "comment": "录音" }, { "path": "/sdcard/MIUI/sound_recorder/app_rec", "comment": "应用录音" } ], "output": "E:/backups/MI10PRO" }
Laksanakan sandaran
Dalam konsol, masukkan mib
terus untuk mencetuskan skrip tanpa sebarang parameter lain.
mib
Konsol akan mengeluarkan maklumat yang sepadan berdasarkan fail konfigurasi.
2022-04-09 20:58:11 info 当前执行备份任务:屏幕录制 2022-04-09 20:58:11 info 备份数量1 2022-04-09 20:58:11 info 已获取数据24Mb 2022-04-09 20:58:11 info 备份体积24Mb 2022-04-09 20:58:11 info 正在备份Screenrecorder-2022-04-08-19-45-51-836.mp4 2022-04-09 20:58:12 info 平均传输速度27.7 MB/s 2022-04-09 20:58:12 info 当前执行备份任务:录音 2022-04-09 20:58:12 info 备份数量0 2022-04-09 20:58:12 info 备份体积0Mb 2022-04-09 20:58:12 info 无需备份 2022-04-09 20:58:13 info 程序结束
Alamat asal: https://juejin.cn/post/7084889987631710221
Penulis: _island
Mohon lebih banyak pengetahuan berkaitan nod lawati: tutorial nodejs!
Atas ialah kandungan terperinci Membawa anda langkah demi langkah untuk membangunkan alat sandaran telefon mudah alih menggunakan Node.js dan adb. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!