Linux 環境で そこへのデータ送信は文字列のコピーのみできるところ
ssh 等を通したファイルのコピーは不可
その環境からインターネット接続は不可
だけどそこにファイル持っていきたい

ファイルを zip にまとめて base64 文字列で複数回に分けて貼り付けてから Linux 環境で復元する
PHP や Node.js は入れられないけど Python はデフォルトで入ってるので使える
Python のコードは文字列なのでプログラム自体を持っていくのも問題なくできる

そのときの復元用コード

import argparse
import base64
from pathlib import Path

parser = argparse.ArgumentParser()
parser.add_argument("directory")
parser.add_argument("output")
args = parser.parse_args()

directory = Path(args.directory)
files = list(directory.glob("*.part"))
files = sorted(files, key=lambda x: x.name)

if len(files) == 0:
print("対象のファイルが見つかりません")
exit(1)
else:
print("対象ファイル:")
print([file.name for file in files])

b64str = ""

for file in files:
b64str += file.read_text()

result = base64.b64decode(b64str)

with open(args.output, "wb") as f:
f.write(result)

print("完了しました")

適当なフォルダ (dir1) に 01.part, 02.part, ... のようにファイルを作って 次のコマンドを実行

python3 b64restore.py dir1 output.zip

dir1 の中の .part のファイルをソートして結合して base64 デコードして output.zip に出力



考えてみると 全体をメモリに一旦乗せるならファイルに保存する必要ないし 標準入力に貼り付けるようにしました

import sys
import base64

text = sys.stdin.read()
result = base64.b64decode(text)
sys.stdout.buffer.write(result)
python3 b64restore.py > data.zip

Base64 文字列を全部貼り付けたら Ctrl-D で EOF を送って終了させます