

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 SFTP 連接器
<a name="transfer-sftp-connectors"></a>

本主題說明如何使用 SFTP 連接器執行支援的檔案操作。您也可以在 AWS Transfer Family 主控台上選取連接器的詳細資訊，以尋找執行這些操作的範例命令，網址為 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)。

建立 SFTP 連接器之後，您可以使用它在與其相關聯的遠端 SFTP 伺服器上執行下列檔案操作。
+ 將檔案從 Amazon S3 傳送至遠端 SFTP 伺服器。
+ 從遠端 SFTP 伺服器擷取檔案至 Amazon S3。
+ 從遠端 SFTP 伺服器上的目錄列出檔案和子資料夾。
+ 刪除、重新命名或移動遠端 SFTP 伺服器上的檔案和目錄。

如需建立連接器的詳細資訊，請參閱 [建立 SFTP 連接器](configure-sftp-connector.md)。

**Topics**
+ [傳輸檔案](transfer-files-and-track.md)
+ [列出遠端目錄的內容](sftp-connector-list-dir.md)
+ [移動、重新命名或刪除遠端伺服器上的檔案或目錄](move-delete-remote-files.md)

# 傳輸檔案
<a name="transfer-files-and-track"></a>

**Topics**
+ [使用 SFTP 連接器傳送和擷取檔案](#send-retrieve-connector-details)

## 使用 SFTP 連接器傳送和擷取檔案
<a name="send-retrieve-connector-details"></a>

若要使用 SFTP 連接器傳送和擷取檔案，您可以使用 [https://docs.aws.amazon.com/transfer/latest/APIReference/API_StartFileTransfer.html](https://docs.aws.amazon.com/transfer/latest/APIReference/API_StartFileTransfer.html) API 操作並指定下列參數，具體取決於您是*傳送檔案* （傳出傳輸） 還是*接收檔案* （傳入傳輸）。請注意，每個`StartFileTransfer`請求可以包含 10 個不同的路徑。

**注意**  
 根據預設，SFTP 連接器一次處理一個檔案，依序傳輸檔案。您可以選擇使用支援相同使用者並行工作階段的遠端伺服器建立並行工作階段，並平行處理最多 5 個檔案，以加速傳輸效能。  
 若要啟用任何連接器的並行連線，您可以在建立或更新連接器時編輯**並行連線上限**設定。如需詳細資訊，請參閱[使用服務管理的輸出建立 SFTP 連接器](create-sftp-connector-procedure.md)。
+ **傳出傳輸** 
  + `send-file-paths` 包含從 1 到 10 個來源檔案路徑，讓檔案傳輸到合作夥伴的 SFTP 伺服器。
  + `remote-directory-path` 是將檔案傳送到客戶 SFTP 伺服器上的遠端路徑。
+ **傳入傳輸** 
  + `retrieve-file-paths` 包含 1 到 10 個遠端路徑。每個路徑都會指定將檔案從合作夥伴的 SFTP 伺服器傳輸至 Transfer Family 伺服器的位置。
  + `local-directory-path` 是存放檔案的 Amazon S3 位置 （儲存貯體和選用字首）。

若要傳送檔案，請指定 `send-file-paths`和 `remote-directory-path` 參數。您最多可以為 `send-file-paths` 參數指定 10 個檔案。下列範例命令會將`/amzn-s3-demo-source-bucket/file2.txt`位於 Amazon S3 儲存體中名為 `/amzn-s3-demo-source-bucket/file1.txt`和 的檔案傳送至合作夥伴 SFTP 伺服器上的 `/tmp`目錄。若要使用此範例命令，請將 取代`amzn-s3-demo-source-bucket`為您自己的儲存貯體。

```
aws transfer start-file-transfer --send-file-paths /amzn-s3-demo-source-bucket/file1.txt /amzn-s3-demo-source-bucket/file2.txt \
    --remote-directory-path /tmp --connector-id c-1111AAAA2222BBBB3 --region us-east-2
```

若要擷取檔案，請指定 `retrieve-file-paths`和 `local-directory-path` 參數。下列範例會擷取`/my/remote/file2.txt`合作夥伴 SFTP 伺服器上的檔案 `/my/remote/file1.txt`和 ，並將其置於 Amazon S3 位置 /amzn-s3-demo-bucket/*prefix*。若要使用此範例命令，請以您自己的資訊取代 `user input placeholders`。

```
aws transfer start-file-transfer --retrieve-file-paths /my/remote/file1.txt  /my/remote/file2.txt \
   --local-directory-path /amzn-s3-demo-bucket/prefix --connector-id c-2222BBBB3333CCCC4 --region us-east-2
```

上述範例會在 SFTP 伺服器上指定絕對路徑。您也可以使用相對路徑：也就是相對於 SFTP 使用者主目錄的路徑。例如，如果 SFTP 使用者是 `marymajor`，且 SFTP 伺服器上的主目錄是 `/users/marymajor/`，則下列命令會`/amzn-s3-demo-source-bucket/file1.txt`傳送至 `/users/marymajor/test-connectors/file1.txt`

```
aws transfer start-file-transfer --send-file-paths /amzn-s3-demo-source-bucket/file1.txt \
   --remote-directory-path test-connectors --connector-id c-2222BBBB3333CCCC4 --region us-east-2
```

# 列出遠端目錄的內容
<a name="sftp-connector-list-dir"></a>

從遠端 SFTP 伺服器擷取檔案之前，您可以擷取遠端 SFTP 伺服器上目錄的內容。若要這樣做，您可以使用 [https://docs.aws.amazon.com/transfer/latest/APIReference/API_StartDirectoryListing.html](https://docs.aws.amazon.com/transfer/latest/APIReference/API_StartDirectoryListing.html) API 操作。

下列範例列出遠端 SFTP 伺服器上資料夾的內容，該`home`資料夾在連接器的組態中指定。結果會放入 Amazon S3 位置 `/amzn-s3-demo-bucket/connector-files`和名為 的檔案`c-AAAA1111BBBB2222C-6666abcd-11aa-22bb-cc33-0000aaaa3333.json`。

```
aws transfer start-directory-listing  \
   --connector-id c-AAAA1111BBBB2222C  \ 
   --output-directory-path /amzn-s3-demo-bucket/example/connector-files  \
   --remote-directory-path /home
```

此 AWS CLI 命令會傳回清單 ID 和包含結果的檔案名稱。

```
{
    "ListingId": "6666abcd-11aa-22bb-cc33-0000aaaa3333",
    "OutputFileName": "c-AAAA1111BBBB2222C-6666abcd-11aa-22bb-cc33-0000aaaa3333.json"
}
```

**注意**  
輸出檔案的命名慣例為 `connector-ID-listing-ID.json`。

JSON 檔案包含下列資訊：
+ `filePath`：遠端檔案的完整路徑，相對於遠端伺服器上 SFTP 連接器的清單請求目錄。
+ `modifiedTimestamp`：上次修改檔案的時間，以秒為單位，即國際標準時間 (UTC) 格式。此欄位為選用欄位。如果遠端檔案屬性不包含時間戳記，則會從檔案清單中省略。
+ `size`：檔案大小，以位元組為單位。此欄位為選用欄位。如果遠端檔案屬性不包含檔案大小，則會從檔案清單中省略。
+ `path`：遠端目錄的完整路徑，相對於遠端伺服器上 SFTP 連接器的清單請求目錄。
+ `truncated`：標記，指出清單輸出是否包含遠端目錄中包含的所有項目。如果您的`truncated`輸出值為 true，您可以增加選用`max-items`輸入屬性中提供的值，以便能夠列出更多項目 （最大允許清單大小為 10，000 個項目）。

以下是輸出檔案 (`c-AAAA1111BBBB2222C-6666abcd-11aa-22bb-cc33-0000aaaa3333.json`) 內容的範例，其中遠端目錄包含兩個檔案和兩個子目錄 （路徑）。

```
{
    "files": [
        {
            "filePath": "/home/what.txt",
            "modifiedTimestamp": "2024-01-30T20:34:54Z",
            "size" : 2323
        },
        {
            "filePath": "/home/how.pgp",
            "modifiedTimestamp": "2024-01-30T20:34:54Z",
            "size" : 4691
        }
    ],
    "paths": [
        {
            "path": "/home/magic"
        },
        {
            "path": "/home/aws"
        },
    ],
    "truncated": "false"
}
```

# 移動、重新命名或刪除遠端伺服器上的檔案或目錄
<a name="move-delete-remote-files"></a>

**Topics**
+ [移動或重新命名遠端 SFTP 伺服器上的檔案或目錄](#move-remote-file)
+ [刪除遠端 SFTP 伺服器上的檔案或目錄](#delete-remote-file)

## 移動或重新命名遠端 SFTP 伺服器上的檔案或目錄
<a name="move-remote-file"></a>

您可以使用 SFTP 連接器來移動或重新命名遠端 SFTP 伺服器上的檔案和目錄。請注意，遠端伺服器需要支援這些操作，才能使用連接器成功處理。

一些常見的使用案例如下所示。
+ 遠端伺服器每小時會產生或接收新的檔案，其檔案名稱相同，但時間戳記不同。若要讓主要資料夾保持在最新狀態 （以便只包含最新的檔案），您可以使用連接器將較舊的檔案移至封存的資料夾。
+ 您可以使用連接器列出遠端目錄中的所有檔案，然後將所有檔案傳輸到本機儲存體。然後，您可以使用連接器將檔案移至遠端伺服器上的封存資料夾。

您必須對要處理的每個檔案或目錄使用 `StartRemoteMove` 呼叫，因為命令會將單一來源和目的地檔案或目錄做為引數。不過，您可以讓連接器使用支援來自相同使用者的並行工作階段的遠端伺服器建立並行工作階段，並平行移動/重新命名最多 5 個檔案，以加速效能。

下列範例會將遠端 SFTP 伺服器上的檔案從 移至 `/source/folder/sourceFile` `/destination/targetFile`，並傳回 操作的唯一識別符。

```
aws transfer --connector-id c-AAAA1111BBBB2222C start-remote-move \
   --source-path /source/folder/sourceFile --target-path /destination/targetFile
```

**注意**  
對於移動/重新命名操作，Transfer Family 會使用標準`SFTP SSH_FXP_RENAME`命令來執行移動/重新命名操作。

## 刪除遠端 SFTP 伺服器上的檔案或目錄
<a name="delete-remote-file"></a>

您可以使用 SFTP 連接器來刪除遠端 SFTP 伺服器上的檔案或目錄。請注意，遠端伺服器需要支援這些操作，才能使用連接器成功處理。

**注意**  
只有空白目錄才支援遠端目錄的刪除操作。

一些常見的使用案例如下所示。
+ 您可以使用連接器從遠端 SFTP 伺服器擷取檔案，將其存放在 Amazon S3 儲存貯體中，然後將其加密。最後，您可以使用連接器來刪除遠端伺服器上未加密的檔案。
+ 您可以使用連接器列出遠端目錄中的所有檔案，然後將所有檔案傳輸到本機儲存體。然後，您可以使用連接器來刪除您傳輸的所有檔案。如果您願意，也可以刪除遠端目錄。

您必須對要刪除的每個檔案或目錄使用 `StartRemoteDelete` 呼叫，因為命令會將單一檔案或目錄做為引數。不過，您可以讓連接器使用支援相同使用者並行工作階段的遠端伺服器建立並行工作階段，並平行刪除最多 5 個檔案/目錄，以加速效能。

下列範例會刪除路徑 中遠端 SFTP 伺服器上的檔案`/delete/folder/deleteFile`，並傳回 操作的唯一識別符。

```
aws transfer start-remote-delete --connector-id c-AAAA1111BBBB2222C \
   --delete-path /delete/folder/deleteFile
```

**注意**  
對於刪除操作，Transfer Family 會使用標準`SSH_FXP_REMOVE`命令來刪除檔案，以及`SSH_FXP_RMDIR`刪除目錄。