「ファイル転送」タグアーカイブ

HULFTの転送速度はどのくらい?大容量ファイル送信を高速化するチューニング術

企業システム間のデータ連携で定番の HULFT(ハルフト)
日次バッチや帳票ファイルの受け渡しで使っていると、「転送が遅いのでは?」と感じることもあるでしょう。

この記事では、HULFTの転送速度の目安と、大容量ファイルを高速・安定的に送信するためのチューニング術をまとめます。
さらに、WinSCP や AWS CLI との比較も紹介します。


1. HULFTの転送速度の目安

HULFT自体は内部的に64bit整数でファイルを扱えるため、理論的な制限はほぼありません。
実際の速度は ネットワーク帯域 × HULFTの処理オーバーヘッド に左右されます。

📊 ファイルサイズ別の目安(1Gbps環境・実効70〜80%の場合)

ファイルサイズ転送時間の目安備考
100MB1〜2秒LAN環境なら一瞬
1GB10〜15秒WAN越しだと数分に延びることも
5GB1〜2分S3の1オブジェクト上限(5TB)には余裕あり

💡 100Mbpsの回線では、1GB送信に2分前後かかります。
つまり「回線帯域の影響が支配的」と言えます。


2. 回線速度ごとの目安

HULFTのオーバーヘッド込みで実効値を 70〜80% と仮定した場合の目安です。

回線速度理論値実効値(目安)1GB転送時間
1Gbps回線(LAN内)125MB/s90〜100MB/s約10〜12秒
100Mbps回線(VPN/クラウド接続)12.5MB/s8〜10MB/s約100〜120秒(2分程度)
50Mbps回線(遅めのVPN)6.25MB/s約5MB/s約200秒(3〜4分)
10Mbps回線(制限回線など)1.25MB/s約1MB/s約15〜20分
👉 このように、回線帯域がボトルネックになるケースが大半です。

チューニングで改善できるのは「オーバーヘッド部分」ですが、根本は回線速度に依存します。


3. HULFTと他の手段の速度比較

同じ回線での「体感スピード」の比較イメージです。

手段転送速度の傾向特徴
HULFT実効70〜80%(安定)商用の運用性・再送制御が強い。監査/ジョブ連携向き
WinSCP (SFTP/FTP)実効50〜70%GUIで扱いやすいが大容量の再送制御は弱め
AWS CLI (S3 cp/sync)実効80〜90%(並列化可)高速だがジョブ管理や監査は限定的
👉 HULFTは「最高速」ではなく「確実性と運用性を優先した転送」という位置づけです。

特に基幹システム間の「失敗できない転送」ではHULFTが選ばれる理由があります。


4. 転送速度に影響する要因

HULFTの転送性能は、次の要素で大きく変わります。

  • ネットワーク帯域:1Gbpsか100Mbpsかで10倍以上の差

  • HULFTのバッファサイズ:デフォルト64KB → 1MBに拡張すると効率UP

  • 再送制御:エラー時の挙動設定によって安定性と速度が変わる

  • ファイルシステムのI/O性能:HDDよりSSDの方が有利

  • 暗号化や圧縮の有無:CPU負荷が上がると転送速度が落ちる


5. 高速化のためのチューニング術

大容量ファイルを送る際に有効なチューニング方法を整理します。

(1) バッファサイズ調整

  • パラメータ SEND_BUFFER_SIZE1024KB(1MB)程度 に拡張

  • WAN越しでもスループットが改善

 
# 設定例 SEND_BUFFER_SIZE=1024

(2) マルチパートアップロード(S3利用時)

  • HULFT Storage Option では 並列転送 に対応

  • 1GBクラスなら1パートで十分だが、数GB以上なら 4〜8並列 に設定すると効果大

(3) 部分再送を有効化

  • 転送途中で中断しても 途中から再開 できる

  • WAN経由や夜間バッチでの安定性向上に必須

(4) 圧縮の利用

  • CSVやテキストは圧縮転送で大幅短縮

  • バイナリ(PDFやZIP)は圧縮効果が薄い

(5) ネットワーク調整

  • TCPウィンドウサイズやNIC送信バッファを拡張

  • Linux例:


6. 運用上の工夫

速度チューニングだけでなく、運用面でも工夫が必要です。

  • ピーク時間を避けてスケジューリング(夜間バッチに実行)

  • 再送回数を3回程度に設定し、エラー時のリカバリを自動化

  • ログ監視(HULFTの送受信ログ+S3側のCloudWatch)で転送成功を二重確認

  • 日付付きファイル名で履歴管理を容易に


まとめ

  • HULFT自体は大容量に強く、理論上は数TB〜EBまで対応可能

  • 実効速度は 回線帯域 × バッファ調整 × 再送設定 がカギ

  • 100MBなら数秒、1GBなら十数秒〜数分 が目安

  • HULFTは最高速よりも「確実性・運用性」を重視する製品

  • バッファ拡張・並列化・部分再送 で安定高速な運用が可能

HULFTで「完了コード250 エラー」が発生したときの対応手順

HULFT (UNIX/Linux 環境) でファイル配信を行った際、「完了コード250」が返されることがあります。公式ドキュメントではこのコードを “A server error” としており、集信側(受信側)で異常が発生したことを示しています。⇒ HULFT

本記事では、完了コード250の意味、原因、公式で推奨されている対処方法、実践的なチェックポイント、および再発防止策をまとめます。


完了コード250とは?

項目 内容
エラーコード 250
英語名称 A server error HULFT
意味 「集信側に異常が発生したと考えられます」 HULFT
詳細 完了コード250が設定された場合、さらに 詳細コード が設定されており、それが集信側の完了コードとなります。 HULFT

つまり、完了コード250は「送信側から配信は試みられたが、受信側で何かしら正常でない処理が起きて失敗した」ということを示す総称的なエラーで、原因の切り分けには “詳細コード” を見る必要があります。HULFT


主な原因(公式の可能性を含む)

ドキュメントに明記されている「完了コード250 → 集信側に異常が発生」の具体的な事例としては以下があげられます。これらは「詳細コード」によってどのような異常かが特定されます。HULFT

  • ディスク容量不足など、受信側で書き込みができない状態 HULFT

  • ファイルアクセス権限エラーやファイルロック状態 HULFT

  • テキスト転送で「1 レコードのデータ長が最大値を超えている」 HULFT

  • 配信途中でファイルの編集や移動・削除など、ファイルの整合性が保てなくなる操作が行われた場合 HULFT

  • フォーマットミスマッチ・バージョン不一致など、データ形式やコードセットに関する不整合 HULFT


対応手順(公式の指示+実践的対応)

以下は、公式ドキュメントの「対処(処置)」に加えて現場でよく使われるチェック項目を織り交ぜた手順です。


ステップ 1:ログ・詳細コードの確認

  • HULFT の hulogtrnlog もしくは配信ログを確認

  • 完了コードが 250 の行を探す

  • その行に 詳細コード(集信側の完了コード)が記録されているか確認 HULFT

  • 詳細コードに応じて原因の方向性を絞る


ステップ 2:受信側(集信側)の環境チェック

以下を重点的に確認します。

項目 チェック内容
ディスク容量 受信ディレクトリのあるファイルシステムの空き容量を確認
ファイルアクセス・ロック 該当ファイル名が他プロセスにより使用中でないか、書き込み権限があるか
ファイル操作 配信中に受信側でファイルを移動・削除・名前変更などしていないか
フォーマット・レコード長 テキスト転送時に1レコードの長さが制限(32768バイト)を超えていないかなど HULFT
バージョン・コードセット 転送や受信のフォーマット定義、文字コード変換などが正しく一致しているか

ステップ 3:通信経路・送受信設定の確認

  • ネットワーク切断、遅延、ファイアウォールによる通信遮断等の影響がないか

  • 送信側・受信側両方の HULFT 定義(配信パラメータ、フォーマットID、文字コードなど)が整合しているか

  • マウントされているネットワークファイルシステム(NFS等)を使っている場合、属性キャッシュやマウントオプションが影響していないか確認 HULFT


ステップ 4:修正・再実行

  • 問題箇所が見つかったら修正(空き容量確保、権限修正、ファイルの整合性維持、フォーマット修正など)

  • 修正後、再度配信ジョブを実行

  • 再送前に、テスト環境や限定ファイルで動作を確認できるならそれを行う


再発防止策

公式仕様と実践双方から以下が有効です:

  1. 監視体制の整備

    • ディスク容量の自動監視

    • ファイルシステムの状態/マウントオプションの監視

    • HULFT ジョブのステータス監視(完了コードを含む)

  2. 設定の標準化とレビュー

    • フォーマット定義・文字コード・レコード長などをドキュメント化

    • 新しいノードや定義を追加する際のチェックリストを整備

  3. テスト運用

    • 転送前に小さなデータでテスト送受信を行う

    • 大容量/長レコード/特殊文字を含むデータの事前検証

  4. エラー通知システムの活用

    • 完了コード250やその詳細コードをトリガーにアラートをあげるように設定

    • 関係者に通知が行くようにすることで早期対応


ケーススタディ(想定例)

例 1:テキストファイルの 1 レコードが長すぎる

  • ある送信ジョブで、伝票データを1行にまとめすぎてしまい、1 レコードの文字数が制限(32,768バイト)を超えていた → 詳細コードが 251 の可能性あり。HULFT

  • 対策:レコードを分割するか、フォーマットを見直す

例 2:受信側のディスクフル

  • 受信サーバ上のディスク容量がゼロ近く、書き込みができずにエラー

  • 対策:不要ファイルの削除、ディスク拡張、ログのローテーション設定など


まとめ

  • 完了コード 250 は「受信側での異常」を示し、詳細コードにより原因の絞り込みが可能

  • ログの確認 → 環境チェック → 設定見直し → 修正・再実行が基本の流れ

  • 再発防止のための監視・標準化・テストが重要

HULFTでCSVをバイナリ指定するとどうなる?使い方と注意点まとめ

はじめに

企業間やシステム間のデータ連携でよく利用されるファイル転送ソフトウェア「HULFT」。日常的にCSVやログファイルをやり取りしている方も多いと思います。
その際に必ず出てくるのが「ファイルモードの指定」。HULFTには 「テキスト指定(レコード指定)」「バイナリ指定」 の2種類があり、どちらを使うべきか迷うケースが少なくありません。

本記事では 「CSVをバイナリ指定で送った場合どうなるのか?」 を中心に、メリット・デメリットや注意点を整理します。


バイナリ指定とは?

HULFTにおける「バイナリ指定」とは、ファイル内容を1バイト単位のデータとしてそのまま送受信するモードを指します。
この場合、HULFTは以下のような変換や処理を一切行いません。

  • 改行コードの変換(CRLF⇔LFなど)

  • 文字コードの変換(Shift-JIS⇔UTF-8など)

  • レコード単位の制御(固定長・可変長)

つまり「HULFTが何も手を加えずにコピーする」のがバイナリ指定です。


バイナリ指定のメリット

  1. 内容がそのまま届く
    改行コードや文字コードが勝手に変換されないため、送信元のデータを完全に保持できます。

  2. ファイル形式を問わない
    CSVに限らず、Excel、PDF、ZIP、画像ファイルなども問題なく転送可能。
    → そのため「とりあえず壊れたくないファイルはバイナリ指定」で安全に扱えます。

  3. 異なるOS間でも安心
    WindowsからLinux、Linuxからホスト系など、環境差異を気にせず転送できます。


バイナリ指定のデメリット

  1. 文字コード変換がされない
    送信側がShift-JIS、受信側がUTF-8を前提としている場合、そのままでは文字化けします。

  2. 改行コードもそのまま
    WindowsのCSV(CRLF)をLinuxで処理すると、アプリ側がLFを期待していた場合に不具合の原因になります。

  3. レコード単位の扱いができない
    COBOLやホストシステム連携など「固定長レコード前提」のファイルを扱う場合は不向きです。


CSVをバイナリ指定で送るとどうなる?

結論から言うと、基本的に悪影響はありません
CSVは単なるテキストファイルですが、HULFT側で勝手に改行コードや文字コードを変換しないので、送信元と全く同じファイルが届きます。

ただし以下のケースでは注意が必要です。

  • 文字コードが異なる場合
    送信元がShift-JIS、受信先がUTF-8で解析 → 文字化けの可能性あり。

  • 改行コードが異なる場合
    Windowsで作成したCSVをLinuxで使うと、改行が意図通りに扱えないことがある。

そのため「受信側のシステムがどの文字コード・改行コードを想定しているか」を事前に確認しておくことが大切です。


まとめ

  • バイナリ指定は「ファイルをそのまま送りたいとき」に有効。

  • CSVを送る場合も基本的に問題はないが、受信側の文字コードや改行コードの前提条件によっては注意が必要。

  • 迷ったらまずは「バイナリ指定」で送り、必要に応じて受信側で変換処理を入れるのが無難です。


👉 実際の業務では「相手先がどんなシステムで受けるのか」を確認してから指定するのが鉄則です。
もし「文字コード変換が必要」や「固定長レコード前提」のような要件がある場合は、バイナリ指定ではなくテキスト指定を選ぶ方が安全です。