Node.js と adb を使用して携帯電話のバックアップ ガジェットを開発する手順を段階的に説明します。
この記事では、Node の実践的な経験を共有し、Node.js と adb を使用して携帯電話のバックアップ ガジェットを開発する方法を紹介します。
テクノロジーの発展に伴い、私たちが日常生活で撮影する写真やビデオの解像度は向上し続けていますが、これには大きな欠点もあります。サイズもどんどん大きくなってます。私がスマートフォンを使い始めたとき、写真は 2 ~ 5MB
しかなかったのを今でも覚えていますが、今では写真は 15 ~ 20MB
、あるいはそれ以上に大きくなりました。
#携帯電話のストレージ容量は限られています。これらの写真やビデオをバックアップして、携帯電話の容量を増やすにはどうすればよいですか?
そこで、最初はこれらのデータをすべてフォトアルバムクラウドに保存していましたが、データ保存の問題は解決したものの、アップロードサイズの制約や背景を占有する必要があるなどの新たな問題も発生しました。電力消費と広告の増加につながります。
私は単に後で使用をやめて、データをバックアップするためのスクリプトを自分で書いたので、この記事を思いつきました。
私は Node.js
と adb
を使用してこのスクリプトを作成し、MIB
#原理
この小さなツールは、携帯電話上でadb デバッグを使用し、
shell コマンドを通じて携帯電話内のファイル情報を読み取ります。携帯電話内のファイルをコピー、移動します。
実行プロセス
簡単なフローチャートを描きました。MIBは最初に設定ファイルを読み込みます(そうでない場合は、設定ファイルを作成します)。構成ファイルに従ってバックアップが必要なノードのパスを読み取り、ファイルのバックアップ操作を実行します。ノードの終わりまで。
必要な環境のインストール
- Download
- adb
パッケージ、さまざまなデバイス操作を実行するために使用されます
Download - Node.js
、私はこれを信じています。
すでにコンピューターに依存関係ライブラリがインストールされています -
- fs-extra
- :
fs
Module Secondary に基づいていますカプセル化Node
library prompts - :
Node
コマンド ラインでの対話用ライブラリ winston - :
Node
スクリプト ログを記録するためのライブラリ
- :
##設定ファイルの読み取り興味のある友人は、
github
export const getConfig = (): ConfigType => {
if (existConf()) {
return readJsonSync(CONFIG_PATH);
}
// 找不到配置文件
return createDefaultConfig();
};
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; };
バックアップ ノードを通過しますデバイスを選択した後、次のように入力します。トラバーサル ノード情報を取得し、指定されたパス (設定ファイルの output
属性) にコピー ファイルを実行します。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"); } } };
Script function- USB
- 接続バックアップ データ
ワイヤレス接続バックアップ データ
- 複数デバイスのバックアップ選択
- 単一ノードの完全バックアップ 使用
ターミナルに次のコマンドを入力して、グローバルに mib
をインストールします。npm i @qc2168/mib -g
設定スクリプト ファイル初めて使用する場合は、ユーザー ディレクトリに新しい .mibrc
ファイルを作成し、対応するファイルを設定する必要があります。パラメータの内容。{ "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" }
バックアップの実行コンソールで mib
と直接入力し、他のパラメーターを指定せずにスクリプトをトリガーします。mib
コンソールは設定ファイルに基づいて対応する情報を出力します。
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 程序结束
元のアドレス: https://juejin.cn/post/7084889987631710221
著者: _island!ノード関連の知識について詳しくは、こちらをご覧ください。訪問:
nodejs チュートリアル
以上がNode.js と adb を使用して携帯電話のバックアップ ガジェットを開発する手順を段階的に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











カスタム ROM をフラッシュしたり、ブート ループから携帯電話を回復したり、ブートローダーのロックを解除したりしようとしている場合、ADB と Fastboot はあなたの親友になります。 ADB は、携帯電話へのアプリのインストール、デバイスを root 化せずにシステム アプリをアンインストール、アプリ ログの取得、アプリへのコマンドの発行、および一般的な Android デバイスとの通信に役立ちます。 Fastboot と ADB は、Android デバイスを使用する場合に最も重要なツールの 2 つです。ただし、ADB と Fastboot を初めて使用しようとすると、多くの人が問題に遭遇することがよくあります。 「ADB が認識されません」エラーは、初めて ADB をセットアップしようとする人によく見られますが、すでに ADB をセットアップしている人にもよく見られます。

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

ADB は、ユーザーが Android デバイス上で複雑かつ無制限の変更を実行できるようにするコマンド ライン ツールです。これを使用して、アプリのサイドローディング、カスタム ROM フラッシュとファームウェアのアップグレード、その他の高度な調整を実行できます。 ADB ドライバーはこのプロセスを容易にし、ADB が期待どおりに動作することを保証します。ただし、以前のオペレーティング システムと同様に、ADB は Windows 11 にプレインストールされていません。したがって、ドライバーを自分でインストールする必要があります。このチュートリアルでは、ADB ドライバーのインストール方法を示すだけでなく、構成プロセスについても説明します。 ADB ドライバーは安全にインストールできますか? ADB ドライバーは通常は安全です。あなたの PC に不必要なことは何もしません

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。
