転送
アップロードとダウンロード
| 操作 | 手順 |
|---|---|
| アップロード | Finderでファイルやフォルダを選び、OpenSFTPの一覧へドロップします。 |
| ダウンロード | OpenSFTPで項目を選び、Finderの保存先フォルダへドラッグします。 |
| 保存先を選んでダウンロード | 項目を選び、ダウンロードボタン、右クリックの「Finderへダウンロード…」、または「リモート → ダウンロード…」で保存先を選びます。 |
複数項目をまとめて転送できます。アップロード先は、現在表示しているサーバー側のフォルダです。一覧中のフォルダの上にドロップしても、そのフォルダの中ではなく、現在表示中の場所へ転送します。
通常ファイルのアップロード・ダウンロードでは、転送の実行時に同名項目があれば「上書き保存」「file-1.txtとして保存」「キャンセル」の3択を表示します。別名保存では拡張子の直前に、重複しない最小の自然数(1、2、3…)を付けます。例えば file-1.txt と file-3.txt がある場合は file-2.txt として保存します。キャンセルした項目は中断し、後続のキューは継続します。フォルダやリンクなど種類が異なる項目への上書きはできません。Finderが別名を付けた場合は、その名前を保存先として扱います。
通常ファイルとSFTP方式のフォルダアップロードでは、保存先の実際のパスを確定し、書き込み前と保存確定前に親階層がリンクへ変更されていないか確認します。ファイルは排他的に作成した一時ファイルへ転送し、成功後に名前変更で確定します。既存ファイルの原子的な置換に対応しないサーバーでは、上書きは元のファイルを残して失敗します。確認と書き込みは別の操作のため、差し替えを完全に防ぐには、サーバー側でも他ユーザーが保存先とその親階層を変更できない権限にしてください。この保存処理はrsync方式には適用しません。
ローカルへのダウンロードで番号付きの別名保存を選ぶと、保存成功後に既存ファイルと新しく保存したファイルを /usr/bin/diff -u で自動比較します。例えば file.txt を残して file-1.txt に保存した場合は、diff -u '/保存先/file.txt' '/保存先/file-1.txt' に相当する比較を実行します。「ログ」を開いて該当のキュー行を選ぶと、実行コマンド、差分、診断出力、[diff exit: …] を確認できます。- の行は既存ファイル、+ の行は新しく保存したファイルの内容です。アップロードや上書き保存、転送の失敗・キャンセルでは、この比較を行いません。
フォルダは元の名前を保って転送します。新規転送でも、既存の同名フォルダを更新する場合でも、実行時に転送方法を選びます。選択肢はフォルダの転送方法を参照してください。
転送の完了・失敗は、アプリのキューで確認してください。特にフォルダのドラッグでは、Finder上にフォルダが見えても、中身の転送が終わっているとは限りません。キューが「完了」になるまで、転送中の項目を移動・名前変更しないでください。
キュー・進捗・ログ
キューで結果を確認する
転送や操作は各ウィンドウのキューへ追加されます。ファイル転送・変更・削除はアプリ全体で一件ずつ順に実行し、別ウィンドウの一覧取得は並行できます。フォルダの転送や削除は、フォルダごとに一件の処理として表示します。一件が失敗しても、待機中の別の処理は続きます。
キューには操作、接続先・対象、状態、開始時刻、結果が表示されます。失敗した行の「再実行」でやり直せます。フォルダの転送方法や削除の確認は、再実行時にも表示します。自動で再試行はしません。
進捗を見る
長いSFTP転送では、結果欄に進捗バー、割合、概算の転送済み量、速度、推定残り時間が表示されます。最初の進捗を受信してから約1秒後に表示するため、短い転送では進捗バーが出ないことがあります。速度と残り時間は目安です。停滞中や推定できない場合は「—」や「計算中」になります。
100%の表示だけで成功とは判断せず、キューの状態が「完了」になったことを確認してください。
rsyncには割合・速度・残り時間の表示はありません。実行中のログで、rsyncコマンドや転送項目の出力を確認できます。削除を含むrsyncの結果件数は、rsyncが報告したものだけを表示します。
中断する・終了する
最下部の「中断」、または「リモート → 中断」で、実行中の処理と待機中の処理をまとめて中断します。全体のステータスバーを非表示にしている場合も、メニューから中断できます。
処理に関係するウィンドウのクローズと、処理中のアプリ終了は抑止します。完了を待つか、中断して停止を待ってください。最後のブラウザウィンドウを閉じるとアプリが終了します。
ログを見る
「ログ」ボタン、または「表示 → 実行ログを表示」で開き、キューの行を選びます。開始・終了日時、終了コード、結果、通常出力(stdout)と診断出力(stderr)を確認できます。通信の出力やrsyncの項目名は、画面の言語を変えても翻訳しません。
ローカルへ別名保存したときのdiffも同じログに追記します。[diff exit: 0] は内容が同じ、1 は差分あり、2 以上は比較エラー、-1 は起動失敗です。比較エラーが出ても、保存済みのファイルと転送の成功状態は保持し、ジョブの終了コードには転送の終了コードを表示します。バイナリファイルは、通常は内容の差分ではなく相違の有無を表示します。
認証情報に見える行や秘密鍵の出力はマスクします。接続先名・ユーザー名・パスなどは含まれるため、ログを他の人に渡す前に内容を確認してください。
「完了履歴を消去」で、完了・失敗・中断した処理とそのログを消せます。ログをファイルへ保存する機能はなく、アプリを終了すると履歴とログの内容は失われます。
フォルダの転送方法
フォルダごとの実行開始時に、転送先の同名フォルダの有無を確認して、転送方法を一度だけ選びます。アップロード・ダウンロード、ドラッグ&ドロップ、再実行で共通です。リモート間コピーの選択肢は異なるため、リモート間コピーを参照してください。
同名フォルダがない場合は「SFTP」「rsync」「キャンセル」の3択です。SFTPまたはrsyncでフォルダ全体を新規転送します。
同名フォルダがある場合は、次の5択です。
| 選択肢 | 動作 | 転送先にだけある項目 |
|---|---|---|
| SFTP: 更新分だけ | 新規・更新されたファイルやリンクをSFTPで転送します。 | 残します。 |
| SFTP: すべて上書き | 転送元の通常ファイルとリンクを転送し、同じ種類の同名項目を上書きします。 | 残します。 |
| rsync | 更新分をrsyncでまとめて転送します。 | 残します。 |
| rsync –delete | フォルダ全体をrsyncで比較・転送し、転送先にだけある項目を削除します。 | 削除します。 |
| キャンセル | そのフォルダの転送を取り消します。待機中の別の処理は続きます。 | 変更しません。 |
rsyncは -avz -e ssh を基本とし、フォルダ全体をネイティブ再帰で比較・転送します(rsync --delete では --delete を追加)。SSHには /usr/bin/ssh を使用し、非対話認証と厳格なホスト鍵確認を指定します。
rsync --delete では削除が発生します。転送元が空なら、転送先フォルダの中身を削除します。 削除の範囲は転送対象となる同名の転送先フォルダの配下です。元に戻す機能はないため、転送方向と保存先を確認してください。
フォルダ転送には、空フォルダ・隠しファイル・サブフォルダも含まれます。画面で隠しファイルを非表示にしていても、フォルダ転送では対象になります。既存フォルダへの転送は中身を統合する動作で、フォルダを丸ごと別のものに置き換える操作ではありません。
フォルダ内の通常ファイルは、次の方針でアクセス権を扱います。
| 転送方法・方向 | 新規ファイル | 既存ファイルの上書き |
|---|---|---|
| SFTPでダウンロード | リモートのアクセス権をそのまま引き継ぎます。 | 既存のローカルファイルのPOSIXアクセス権を維持します。 |
| SFTPでアップロード | ローカルのアクセス権を引き継ぎます。 | ローカルのアクセス権を引き継ぎます。 |
| rsync / rsync –delete | 転送元のアクセス権を引き継ぎます。 | 転送元のアクセス権に合わせます。ダウンロードでは既存のローカル権限も変更されることがあります。 |
更新日時は、いずれも転送元のものを引き継ぎます。rsync方式は-aに含まれる-pによってアクセス権を引き継ぎます。接続先の権限や対応状況によっては、これらの設定に失敗する場合があります。
「更新分だけ」の判定
SFTPの「更新分だけ」では、次の項目を転送します。
- 転送先に存在しないファイル。
- 転送元と転送先でサイズが異なるファイル。転送先の日時が新しくても、サイズが違えば転送します。
- サイズが同じでも、転送元の更新日時が新しいファイル。
- 日時を判定できないファイル。
- リンク先の文字列が異なるシンボリックリンク。
サイズが同じで、転送先が同時刻または新しい場合はスキップします。日時はサーバーの一覧に表示される精度で比較します。時刻が表示される項目は分単位、日付だけの古い項目は日単位です。同じサイズ・同じ比較単位内での内容変更は検出できません。サーバーとMacの時計やタイムゾーンのずれも判定に影響します。
「rsync」と「rsync –delete」では、rsync自身がフォルダ全体を比較して転送対象を判定します。上記のSFTPの判定条件・日時の精度は適用しません。「rsync –delete」は、転送先にだけある項目の削除も行います。
衝突・失敗・中断
SFTPでは、フォルダ内で同名のファイル・フォルダ・リンクの種類が異なる場合、スキップするか中止するかを確認します。「rsync」と「rsync –delete」では、フォルダ内の種類の衝突もrsyncが処理します。
途中で失敗したり中断したりすると、そのフォルダの処理を止めます。すでに転送した項目や作成したフォルダ、削除した項目は元に戻りません。再実行では最初から確認し直します。途中から再開する機能はありません。
シンボリックリンクの扱い
「開く」と「転送する」では、次のように動作が異なります。
| 対象 | ダブルクリック・Return・「開く」 | ダウンロード・アップロード |
|---|---|---|
| 単独で選んだフォルダへのリンク | リンク先のフォルダへ移動します。 | リンク先のフォルダを転送します。 |
| 単独で選んだファイルへのリンク | リンク先のファイルを開きます(動作設定に従います)。 | リンク自体をコピーします。 |
| 単独で選んだリンク切れ | 説明を表示します。 | リンク自体をコピーします。 |
| 転送するフォルダの中にあるリンク | — | リンク先をたどらず、リンク自体をコピーします。 |
リンクをコピーするときは、相対・絶対のリンク先文字列をそのまま保ちます。そのため、コピー先に対応するパスがなければリンク切れになることがあります。フォルダ内の循環リンクも、たどらずにリンクとして扱います。
フォルダへのリンクだと確認できた項目は、矢印付きのフォルダアイコンになります。種類の確認はバックグラウンドで行うため、表示が後から変わる場合があります。ファイルへのリンク・リンク切れ・種類不明のリンクは、一般のリンクアイコンで表示します。
一覧で選択したリンク自体の名前変更・削除はできません。フォルダを再帰削除する場合、配下のリンクはリンク自身だけを削除し、リンク先には移動しません。
複数ウィンドウとリモート間コピー
「ファイル → 新規ウィンドウ」、または ⌘N でブラウザを追加できます。それぞれのウィンドウで、同じサーバーの別フォルダにも、別のサーバーにも接続できます。新しいウィンドウは未接続で開きます。タイトルにはウィンドウ番号、接続先、現在のフォルダを表示します。
接続先・フォルダ移動の履歴・選択・表示設定はウィンドウごとに独立し、メニューとショートカットは操作中のウィンドウを対象にします。言語とSSH接続先候補は全ウィンドウで共有します。保存した表示設定は新しいウィンドウの初期値に使い、既に開いている別ウィンドウの表示は変えません。
ウィンドウ間でコピーする
- コピー元とコピー先のウィンドウを開き、それぞれ接続します。
- コピー先で、保存先のフォルダへ移動します。
- コピー元で項目を選び、コピー先の一覧へドラッグ&ドロップします。
- コピー先のキューで結果を確認します。
通常ファイル・フォルダ・リンクを複数選択してコピーできます。ドロップ先は現在表示するフォルダです。コピー元は残り、修飾キーを押しても移動には変わりません。ドラッグ開始時のコピー元とドロップ時のコピー先を保持するため、その後に画面を移動しても転送対象は変わりません。転送に関係するウィンドウの再接続は、転送終了までできません。
通常ファイルと単独リンクの同名衝突では、「上書き保存」「file-1.txtとして保存」「キャンセル」を選びます。別名の番号はコピー先で重複しない最小の自然数です。
フォルダは元の名前を保ってコピーします。同名フォルダがなければ新規作成し、既にある場合だけ「更新分だけ」「すべて上書き」「キャンセル」の3択を表示します。更新分は、新規項目、サイズが異なる通常ファイル、コピー元の更新日時が新しい通常ファイルです。リモート間ではSFTPで得た秒単位の更新日時を比較します。同一サイズ・同一更新日時の内容変更は検出しません。どちらの更新方法でも、コピー先だけにある項目は残します。配下の種類衝突ではスキップか中止を確認し、特殊ファイルはスキップします。フォルダ配下のリンクはたどらず、リンク先の文字列を保ってリンク自体を作成します。単独で選んだフォルダへのリンクは、リンク先フォルダをコピーします。
転送の条件と保存方法
リモート間の通常ファイルの内容は、フォルダ配下も含めてMacの scp -3 で中継します。Macに内容の一時ファイルや一時ツリーは作りません。走査・フォルダやリンクの作成・保存名の確定はSFTPで行います。
リモート間コピーには、Macの /usr/bin/ssh と /usr/bin/scp がOpenSSH 9以降であること、およびMacから両端へ非対話でSFTP接続できることが必要です。OpenSSHのバージョンは ssh -V で確認できます。古いクライアントで実行できない場合はエラーで停止します。
コピー先では同じフォルダ内の .opensftp-…partial という一時名へ転送し、成功とコピー元の属性、転送後のサイズを確認してから最終名へ確定します。通常ファイルと新規作成フォルダの通常のアクセス権・更新日時を保持します。既存項目の原子的な置換に対応しないサーバーでは、上書きは元ファイルを残して失敗します。フォルダ全体を一度に置き換える処理ではないため、途中失敗前に完了した項目は残ります。
同じ実効SSH接続設定で同じフォルダ自身や互いの配下へコピーしようとした場合は停止します。ただし、別のDNS名・別ユーザー・異なる踏み台設定・ハードリンク・サーバーのマウント構成をまたぐ同一性は完全には判定できません。実行中の外部変更も完全には排他しません。
データはMacの回線を通るため、Macのスリープや切断で転送が止まります。コピー先には一時ファイル分の空き容量が必要です。通常ファイルごとにscpを起動するため、多数の小ファイルは時間がかかることがあります。
キュー・ログとウィンドウを閉じる操作
転送のキューと詳細ログ、同名衝突や更新方法の確認は、コピー先ウィンドウに表示します。コピー元には「リモート間送信(参照)」として同じジョブの進捗・結果を表示します。コピー元の参照行を選んでログを開くと、「コピー先を表示」から詳細ログのあるウィンドウへ移れます。
リモート間コピーは「走査中」「転送中」「保存を確定中」と完了/対象件数を表示します。リモート間コピーの行の「中断」は、どちらのウィンドウからでも同じジョブを停止します。待機中の行だけを中断することもできます。ウィンドウ下部やメニューの「中断」は、そのウィンドウの実行中・待機中の処理と送信参照中の転送をまとめて停止します。
ファイル転送・変更・削除はアプリ全体で一件ずつ実行します。一覧の取得は別ウィンドウで並行できます。転送が失敗した場合も、後続のキューは継続します。
待機中・実行中の処理のコピー元またはコピー先になっているウィンドウは閉じられません。完了を待つか、中断して停止・後処理の完了を待ってください。無関係なウィンドウは閉じられます。最後のブラウザウィンドウを閉じるとアプリが終了します。⌘Q でも処理中は終了を抑止します。