| 1 | \define{versionidpsftp} \versionid $Id$ |
| 2 | |
| 3 | \C{psftp} Using PSFTP to transfer files securely |
| 4 | |
| 5 | \i{PSFTP}, the PuTTY SFTP client, is a tool for transferring files |
| 6 | securely between computers using an SSH connection. |
| 7 | |
| 8 | PSFTP differs from PSCP in the following ways: |
| 9 | |
| 10 | \b PSCP should work on virtually every SSH server. PSFTP uses the |
| 11 | new SFTP protocol, which is a feature of SSH-2 only. (PSCP will also |
| 12 | use this protocol if it can, but there is an SSH-1 equivalent it can |
| 13 | fall back to if it cannot.) |
| 14 | |
| 15 | \b PSFTP allows you to run an interactive file transfer session, |
| 16 | much like the Windows \c{ftp} program. You can list the contents of |
| 17 | directories, browse around the file system, issue multiple \c{get} |
| 18 | and \c{put} commands, and eventually log out. By contrast, PSCP is |
| 19 | designed to do a single file transfer operation and immediately |
| 20 | terminate. |
| 21 | |
| 22 | \H{psftp-starting} Starting PSFTP |
| 23 | |
| 24 | The usual way to start PSFTP is from a command prompt, much like |
| 25 | PSCP. To do this, it will need either to be on your \i{\c{PATH}} or |
| 26 | in your current directory. To add the directory containing PSFTP to |
| 27 | your \c{PATH} environment variable, type into the console window: |
| 28 | |
| 29 | \c set PATH=C:\path\to\putty\directory;%PATH% |
| 30 | |
| 31 | Unlike PSCP, however, PSFTP has no complex command-line syntax; you |
| 32 | just specify a host name and perhaps a user name: |
| 33 | |
| 34 | \c psftp server.example.com |
| 35 | |
| 36 | or perhaps |
| 37 | |
| 38 | \c psftp fred@server.example.com |
| 39 | |
| 40 | Alternatively, if you just type \c{psftp} on its own (or |
| 41 | double-click the PSFTP icon in the Windows GUI), you will see the |
| 42 | PSFTP prompt, and a message telling you PSFTP has not connected to |
| 43 | any server: |
| 44 | |
| 45 | \c C:\>psftp |
| 46 | \c psftp: no hostname specified; use "open host.name" to connect |
| 47 | \c psftp> |
| 48 | |
| 49 | At this point you can type \c{open server.example.com} or \c{open |
| 50 | fred@server.example.com} to start a session. |
| 51 | |
| 52 | PSFTP accepts all the general command line options supported by the |
| 53 | PuTTY tools, except the ones which make no sense in a file transfer |
| 54 | utility. See \k{using-general-opts} for a description of these |
| 55 | options. (The ones not supported by PSFTP are clearly marked.) |
| 56 | |
| 57 | PSFTP also supports some of its own options. The following sections |
| 58 | describe PSFTP's specific command-line options. |
| 59 | |
| 60 | \S{psftp-option-b} \c{-b}: specify a file containing batch commands |
| 61 | |
| 62 | In normal operation, PSFTP is an interactive program which displays |
| 63 | a command line and accepts commands from the keyboard. |
| 64 | |
| 65 | If you need to do automated tasks with PSFTP, you would probably |
| 66 | prefer to specify a set of commands in advance and have them |
| 67 | executed automatically. The \c{-b} option allows you to do this. You |
| 68 | use it with a file name containing batch commands. For example, you |
| 69 | might create a file called \c{myscript.scr} containing lines like |
| 70 | this: |
| 71 | |
| 72 | \c cd /home/ftp/users/jeff |
| 73 | \c del jam-old.tar.gz |
| 74 | \c ren jam.tar.gz jam-old.tar.gz |
| 75 | \c put jam.tar.gz |
| 76 | \c chmod a+r jam.tar.gz |
| 77 | \c quit |
| 78 | |
| 79 | and then you could run the script by typing |
| 80 | |
| 81 | \c psftp user@hostname -b myscript.scr |
| 82 | |
| 83 | When you run a batch script in this way, PSFTP will abort the script |
| 84 | if any command fails to complete successfully. To change this |
| 85 | behaviour, you can add the \c{-be} option (\k{psftp-option-be}). |
| 86 | |
| 87 | \S{psftp-option-bc} \c{-bc}: display batch commands as they are run |
| 88 | |
| 89 | The \c{-bc} option alters what PSFTP displays while processing a |
| 90 | batch script specified with \c{-b}. With the \c{-bc} option, PSFTP |
| 91 | will display prompts and commands just as if the commands had been |
| 92 | typed at the keyboard. So instead of seeing this: |
| 93 | |
| 94 | \c C:\>psftp fred@hostname -b batchfile |
| 95 | \c Sent username "fred" |
| 96 | \c Remote working directory is /home/fred |
| 97 | \c Listing directory /home/fred/lib |
| 98 | \c drwxrwsr-x 4 fred fred 1024 Sep 6 10:42 . |
| 99 | \c drwxr-sr-x 25 fred fred 2048 Dec 14 09:36 .. |
| 100 | \c drwxrwsr-x 3 fred fred 1024 Apr 17 2000 jed |
| 101 | \c lrwxrwxrwx 1 fred fred 24 Apr 17 2000 timber |
| 102 | \c drwxrwsr-x 2 fred fred 1024 Mar 13 2000 trn |
| 103 | |
| 104 | you might see this: |
| 105 | |
| 106 | \c C:\>psftp fred@hostname -bc -b batchfile |
| 107 | \c Sent username "fred" |
| 108 | \c Remote working directory is /home/fred |
| 109 | \c psftp> dir lib |
| 110 | \c Listing directory /home/fred/lib |
| 111 | \c drwxrwsr-x 4 fred fred 1024 Sep 6 10:42 . |
| 112 | \c drwxr-sr-x 25 fred fred 2048 Dec 14 09:36 .. |
| 113 | \c drwxrwsr-x 3 fred fred 1024 Apr 17 2000 jed |
| 114 | \c lrwxrwxrwx 1 fred fred 24 Apr 17 2000 timber |
| 115 | \c drwxrwsr-x 2 fred fred 1024 Mar 13 2000 trn |
| 116 | \c psftp> quit |
| 117 | |
| 118 | \S{psftp-option-be} \c{-be}: continue batch processing on errors |
| 119 | |
| 120 | When running a batch file, this additional option causes PSFTP to |
| 121 | continue processing even if a command fails to complete successfully. |
| 122 | |
| 123 | You might want this to happen if you wanted to delete a file and |
| 124 | didn't care if it was already not present, for example. |
| 125 | |
| 126 | \S{psftp-usage-options-batch}\c{-batch}: avoid interactive prompts |
| 127 | |
| 128 | If you use the \c{-batch} option, PSFTP will never give an |
| 129 | interactive prompt while establishing the connection. If the |
| 130 | server's host key is invalid, for example (see \k{gs-hostkey}), then |
| 131 | the connection will simply be abandoned instead of asking you what |
| 132 | to do next. |
| 133 | |
| 134 | This may help PSFTP's behaviour when it is used in automated |
| 135 | scripts: using \c{-batch}, if something goes wrong at connection |
| 136 | time, the batch job will fail rather than hang. |
| 137 | |
| 138 | \H{psftp-commands} Running PSFTP |
| 139 | |
| 140 | Once you have started your PSFTP session, you will see a \c{psftp>} |
| 141 | prompt. You can now type commands to perform file-transfer |
| 142 | functions. This section lists all the available commands. |
| 143 | |
| 144 | \S{psftp-quoting} General quoting rules for PSFTP commands |
| 145 | |
| 146 | Most PSFTP commands are considered by the PSFTP command interpreter |
| 147 | as a sequence of words, separated by spaces. For example, the |
| 148 | command \c{ren oldfilename newfilename} splits up into three words: |
| 149 | \c{ren} (the command name), \c{oldfilename} (the name of the file to |
| 150 | be renamed), and \c{newfilename} (the new name to give the file). |
| 151 | |
| 152 | Sometimes you will need to specify file names that \e{contain} |
| 153 | spaces. In order to do this, you can surround the file name with |
| 154 | double quotes. This works equally well for local file names and |
| 155 | remote file names: |
| 156 | |
| 157 | \c psftp> get "spacey file name.txt" "save it under this name.txt" |
| 158 | |
| 159 | The double quotes themselves will not appear as part of the file |
| 160 | names; they are removed by PSFTP and their only effect is to stop |
| 161 | the spaces inside them from acting as word separators. |
| 162 | |
| 163 | If you need to \e{use} a double quote (on some types of remote |
| 164 | system, such as Unix, you are allowed to use double quotes in file |
| 165 | names), you can do this by doubling it. This works both inside and |
| 166 | outside double quotes. For example, this command |
| 167 | |
| 168 | \c psftp> ren ""this"" "a file with ""quotes"" in it" |
| 169 | |
| 170 | will take a file whose current name is \c{"this"} (with a double |
| 171 | quote character at the beginning and the end) and rename it to a |
| 172 | file whose name is \c{a file with "quotes" in it}. |
| 173 | |
| 174 | (The one exception to the PSFTP quoting rules is the \c{!} command, |
| 175 | which passes its command line straight to Windows without splitting |
| 176 | it up into words at all. See \k{psftp-cmd-pling}.) |
| 177 | |
| 178 | \S{psftp-wildcards} Wildcards in PSFTP |
| 179 | |
| 180 | Several commands in PSFTP support \q{wildcards} to select multiple |
| 181 | files. |
| 182 | |
| 183 | For \e{local} file specifications (such as the first argument to |
| 184 | \c{put}), wildcard rules for the local operating system are used. For |
| 185 | instance, PSFTP running on Windows might require the use of \c{*.*} |
| 186 | where PSFTP on Unix would need \c{*}. |
| 187 | |
| 188 | For \e{remote} file specifications (such as the first argument to |
| 189 | \c{get}), PSFTP uses a standard wildcard syntax (similar to POSIX |
| 190 | wildcards): |
| 191 | |
| 192 | \b \c{*} matches any sequence of characters (including a zero-length |
| 193 | sequence). |
| 194 | |
| 195 | \b \c{?} matches exactly one character. |
| 196 | |
| 197 | \b \c{[abc]} matches exactly one character which can be \cw{a}, |
| 198 | \cw{b}, or \cw{c}. |
| 199 | |
| 200 | \lcont{ |
| 201 | |
| 202 | \c{[a-z]} matches any character in the range \cw{a} to \cw{z}. |
| 203 | |
| 204 | \c{[^abc]} matches a single character that is \e{not} \cw{a}, \cw{b}, |
| 205 | or \cw{c}. |
| 206 | |
| 207 | Special cases: \c{[-a]} matches a literal hyphen (\cw{-}) or \cw{a}; |
| 208 | \c{[^-a]} matches all other characters. \c{[a^]} matches a literal |
| 209 | caret (\cw{^}) or \cw{a}. |
| 210 | |
| 211 | } |
| 212 | |
| 213 | \b \c{\\} (backslash) before any of the above characters (or itself) |
| 214 | removes that character's special meaning. |
| 215 | |
| 216 | A leading period (\cw{.}) on a filename is not treated specially, |
| 217 | unlike in some Unix contexts; \c{get *} will fetch all files, whether |
| 218 | or not they start with a leading period. |
| 219 | |
| 220 | \S{psftp-cmd-open} The \c{open} command: start a session |
| 221 | |
| 222 | If you started PSFTP by double-clicking in the GUI, or just by |
| 223 | typing \c{psftp} at the command line, you will need to open a |
| 224 | connection to an SFTP server before you can issue any other |
| 225 | commands (except \c{help} and \c{quit}). |
| 226 | |
| 227 | To create a connection, type \c{open host.name}, or if you need to |
| 228 | specify a user name as well you can type \c{open user@host.name}. |
| 229 | |
| 230 | Once you have issued this command, you will not be able to issue it |
| 231 | again, \e{even} if the command fails (for example, if you mistype |
| 232 | the host name or the connection times out). So if the connection is |
| 233 | not opened successfully, PSFTP will terminate immediately. |
| 234 | |
| 235 | \S{psftp-cmd-quit} The \c{quit} command: end your session |
| 236 | |
| 237 | When you have finished your session, type the command \c{quit} to |
| 238 | close the connection, terminate PSFTP and return to the command line |
| 239 | (or just close the PSFTP console window if you started it from the |
| 240 | GUI). |
| 241 | |
| 242 | You can also use the \c{bye} and \c{exit} commands, which have |
| 243 | exactly the same effect. |
| 244 | |
| 245 | \S{psftp-cmd-close} The \c{close} command: close your connection |
| 246 | |
| 247 | If you just want to close the network connection but keep PSFTP |
| 248 | running, you can use the \c{close} command. You can then use the |
| 249 | \c{open} command to open a new connection. |
| 250 | |
| 251 | \S{psftp-cmd-help} The \c{help} command: get quick online help |
| 252 | |
| 253 | If you type \c{help}, PSFTP will give a short list of the available |
| 254 | commands. |
| 255 | |
| 256 | If you type \c{help} with a command name - for example, \c{help get} |
| 257 | - then PSFTP will give a short piece of help on that particular |
| 258 | command. |
| 259 | |
| 260 | \S{psftp-cmd-cd} The \c{cd} and \c{pwd} commands: changing the |
| 261 | remote working directory |
| 262 | |
| 263 | PSFTP maintains a notion of your \q{working directory} on the |
| 264 | server. This is the default directory that other commands will |
| 265 | operate on. For example, if you type \c{get filename.dat} then PSFTP |
| 266 | will look for \c{filename.dat} in your remote working directory on |
| 267 | the server. |
| 268 | |
| 269 | To change your remote working directory, use the \c{cd} command. If |
| 270 | you don't provide an argument, \c{cd} will return you to your home |
| 271 | directory on the server (more precisely, the remote directory you were |
| 272 | in at the start of the connection). |
| 273 | |
| 274 | To display your current remote working directory, type \c{pwd}. |
| 275 | |
| 276 | \S{psftp-cmd-lcd} The \c{lcd} and \c{lpwd} commands: changing the |
| 277 | local working directory |
| 278 | |
| 279 | As well as having a working directory on the remote server, PSFTP |
| 280 | also has a working directory on your local machine (just like any |
| 281 | other Windows process). This is the default local directory that |
| 282 | other commands will operate on. For example, if you type \c{get |
| 283 | filename.dat} then PSFTP will save the resulting file as |
| 284 | \c{filename.dat} in your local working directory. |
| 285 | |
| 286 | To change your local working directory, use the \c{lcd} command. To |
| 287 | display your current local working directory, type \c{lpwd}. |
| 288 | |
| 289 | \S{psftp-cmd-get} The \c{get} command: fetch a file from the server |
| 290 | |
| 291 | To download a file from the server and store it on your local PC, |
| 292 | you use the \c{get} command. |
| 293 | |
| 294 | In its simplest form, you just use this with a file name: |
| 295 | |
| 296 | \c get myfile.dat |
| 297 | |
| 298 | If you want to store the file locally under a different name, |
| 299 | specify the local file name after the remote one: |
| 300 | |
| 301 | \c get myfile.dat newname.dat |
| 302 | |
| 303 | This will fetch the file on the server called \c{myfile.dat}, but |
| 304 | will save it to your local machine under the name \c{newname.dat}. |
| 305 | |
| 306 | To fetch an entire directory recursively, you can use the \c{-r} |
| 307 | option: |
| 308 | |
| 309 | \c get -r mydir |
| 310 | \c get -r mydir newname |
| 311 | |
| 312 | (If you want to fetch a file whose name starts with a hyphen, you |
| 313 | may have to use the \c{--} special argument, which stops \c{get} |
| 314 | from interpreting anything as a switch after it. For example, |
| 315 | \cq{get -- -silly-name-}.) |
| 316 | |
| 317 | \S{psftp-cmd-put} The \c{put} command: send a file to the server |
| 318 | |
| 319 | To upload a file to the server from your local PC, you use the |
| 320 | \c{put} command. |
| 321 | |
| 322 | In its simplest form, you just use this with a file name: |
| 323 | |
| 324 | \c put myfile.dat |
| 325 | |
| 326 | If you want to store the file remotely under a different name, |
| 327 | specify the remote file name after the local one: |
| 328 | |
| 329 | \c put myfile.dat newname.dat |
| 330 | |
| 331 | This will send the local file called \c{myfile.dat}, but will store |
| 332 | it on the server under the name \c{newname.dat}. |
| 333 | |
| 334 | To send an entire directory recursively, you can use the \c{-r} |
| 335 | option: |
| 336 | |
| 337 | \c put -r mydir |
| 338 | \c put -r mydir newname |
| 339 | |
| 340 | (If you want to send a file whose name starts with a hyphen, you may |
| 341 | have to use the \c{--} special argument, which stops \c{put} from |
| 342 | interpreting anything as a switch after it. For example, \cq{put -- |
| 343 | -silly-name-}.) |
| 344 | |
| 345 | \S{psftp-cmd-mgetput} The \c{mget} and \c{mput} commands: fetch or |
| 346 | send multiple files |
| 347 | |
| 348 | \c{mget} works almost exactly like \c{get}, except that it allows |
| 349 | you to specify more than one file to fetch at once. You can do this |
| 350 | in two ways: |
| 351 | |
| 352 | \b by giving two or more explicit file names (\cq{mget file1.txt |
| 353 | file2.txt}) |
| 354 | |
| 355 | \b by using a wildcard (\cq{mget *.txt}). |
| 356 | |
| 357 | Every argument to \c{mget} is treated as the name of a file to fetch |
| 358 | (unlike \c{get}, which will interpret at most one argument like |
| 359 | that, and a second argument will be treated as an alternative name |
| 360 | under which to store the retrieved file), or a wildcard expression |
| 361 | matching more than one file. |
| 362 | |
| 363 | The \c{-r} and \c{--} options from \c{get} are also available with |
| 364 | \c{mget}. |
| 365 | |
| 366 | \c{mput} is similar to \c{put}, with the same differences. |
| 367 | |
| 368 | \S{psftp-cmd-regetput} The \c{reget} and \c{reput} commands: |
| 369 | resuming file transfers |
| 370 | |
| 371 | If a file transfer fails half way through, and you end up with half |
| 372 | the file stored on your disk, you can resume the file transfer using |
| 373 | the \c{reget} and \c{reput} commands. These work exactly like the |
| 374 | \c{get} and \c{put} commands, but they check for the presence of the |
| 375 | half-written destination file and start transferring from where the |
| 376 | last attempt left off. |
| 377 | |
| 378 | The syntax of \c{reget} and \c{reput} is exactly the same as the |
| 379 | syntax of \c{get} and \c{put}: |
| 380 | |
| 381 | \c reget myfile.dat |
| 382 | \c reget myfile.dat newname.dat |
| 383 | \c reget -r mydir |
| 384 | |
| 385 | These commands are intended mainly for resuming interrupted transfers. |
| 386 | They assume that the remote file or directory structure has not |
| 387 | changed in any way; if there have been changes, you may end up with |
| 388 | corrupted files. In particular, the \c{-r} option will not pick up |
| 389 | changes to files or directories already transferred in full. |
| 390 | |
| 391 | \S{psftp-cmd-dir} The \c{dir} command: list remote files |
| 392 | |
| 393 | To list the files in your remote working directory, just type |
| 394 | \c{dir}. |
| 395 | |
| 396 | You can also list the contents of a different directory by typing |
| 397 | \c{dir} followed by the directory name: |
| 398 | |
| 399 | \c dir /home/fred |
| 400 | \c dir sources |
| 401 | |
| 402 | And you can list a subset of the contents of a directory by |
| 403 | providing a wildcard: |
| 404 | |
| 405 | \c dir /home/fred/*.txt |
| 406 | \c dir sources/*.c |
| 407 | |
| 408 | The \c{ls} command works exactly the same way as \c{dir}. |
| 409 | |
| 410 | \S{psftp-cmd-chmod} The \c{chmod} command: change permissions on |
| 411 | remote files |
| 412 | |
| 413 | PSFTP allows you to modify the file permissions on files and |
| 414 | directories on the server. You do this using the \c{chmod} command, |
| 415 | which works very much like the Unix \c{chmod} command. |
| 416 | |
| 417 | The basic syntax is \c{chmod modes file}, where \c{modes} represents |
| 418 | a modification to the file permissions, and \c{file} is the filename |
| 419 | to modify. You can specify multiple files or wildcards. For example: |
| 420 | |
| 421 | \c chmod go-rwx,u+w privatefile |
| 422 | \c chmod a+r public* |
| 423 | \c chmod 640 groupfile1 groupfile2 |
| 424 | |
| 425 | The \c{modes} parameter can be a set of octal digits in the Unix |
| 426 | style. (If you don't know what this means, you probably don't want |
| 427 | to be using it!) Alternatively, it can be a list of permission |
| 428 | modifications, separated by commas. Each modification consists of: |
| 429 | |
| 430 | \b The people affected by the modification. This can be \c{u} (the |
| 431 | owning user), \c{g} (members of the owning group), or \c{o} |
| 432 | (everybody else - \q{others}), or some combination of those. It can |
| 433 | also be \c{a} (\q{all}) to affect everybody at once. |
| 434 | |
| 435 | \b A \c{+} or \c{-} sign, indicating whether permissions are to be |
| 436 | added or removed. |
| 437 | |
| 438 | \b The actual permissions being added or removed. These can be \c{r} |
| 439 | (permission to read the file), \c{w} (permission to write to the |
| 440 | file), and \c{x} (permission to execute the file, or in the case of |
| 441 | a directory, permission to access files within the directory). |
| 442 | |
| 443 | So the above examples would do: |
| 444 | |
| 445 | \b The first example: \c{go-rwx} removes read, write and execute |
| 446 | permissions for members of the owning group and everybody else (so |
| 447 | the only permissions left are the ones for the file owner). \c{u+w} |
| 448 | adds write permission for the file owner. |
| 449 | |
| 450 | \b The second example: \c{a+r} adds read permission for everybody to |
| 451 | all files and directories starting with \q{public}. |
| 452 | |
| 453 | In addition to all this, there are a few extra special cases for |
| 454 | Unix systems. On non-Unix systems these are unlikely to be useful: |
| 455 | |
| 456 | \b You can specify \c{u+s} and \c{u-s} to add or remove the Unix |
| 457 | set-user-ID bit. This is typically only useful for special purposes; |
| 458 | refer to your Unix documentation if you're not sure about it. |
| 459 | |
| 460 | \b You can specify \c{g+s} and \c{g-s} to add or remove the Unix |
| 461 | set-group-ID bit. On a file, this works similarly to the set-user-ID |
| 462 | bit (see your Unix documentation again); on a directory it ensures |
| 463 | that files created in the directory are accessible by members of the |
| 464 | group that owns the directory. |
| 465 | |
| 466 | \b You can specify \c{+t} and \c{-t} to add or remove the Unix |
| 467 | \q{sticky bit}. When applied to a directory, this means that the |
| 468 | owner of a file in that directory can delete the file (whereas |
| 469 | normally only the owner of the \e{directory} would be allowed to). |
| 470 | |
| 471 | \S{psftp-cmd-del} The \c{del} command: delete remote files |
| 472 | |
| 473 | To delete a file on the server, type \c{del} and then the filename |
| 474 | or filenames: |
| 475 | |
| 476 | \c del oldfile.dat |
| 477 | \c del file1.txt file2.txt |
| 478 | \c del *.o |
| 479 | |
| 480 | Files will be deleted without further prompting, even if multiple files |
| 481 | are specified. |
| 482 | |
| 483 | \c{del} will only delete files. You cannot use it to delete |
| 484 | directories; use \c{rmdir} for that. |
| 485 | |
| 486 | The \c{rm} command works exactly the same way as \c{del}. |
| 487 | |
| 488 | \S{psftp-cmd-mkdir} The \c{mkdir} command: create remote directories |
| 489 | |
| 490 | To create a directory on the server, type \c{mkdir} and then the |
| 491 | directory name: |
| 492 | |
| 493 | \c mkdir newstuff |
| 494 | |
| 495 | You can specify multiple directories to create at once: |
| 496 | |
| 497 | \c mkdir dir1 dir2 dir3 |
| 498 | |
| 499 | \S{psftp-cmd-rmdir} The \c{rmdir} command: remove remote directories |
| 500 | |
| 501 | To remove a directory on the server, type \c{rmdir} and then the |
| 502 | directory name or names: |
| 503 | |
| 504 | \c rmdir oldstuff |
| 505 | \c rmdir *.old ancient |
| 506 | |
| 507 | Directories will be deleted without further prompting, even if |
| 508 | multiple directories are specified. |
| 509 | |
| 510 | Most SFTP servers will probably refuse to remove a directory if the |
| 511 | directory has anything in it, so you will need to delete the |
| 512 | contents first. |
| 513 | |
| 514 | \S{psftp-cmd-mv} The \c{mv} command: move and rename remote files |
| 515 | |
| 516 | To rename a single file on the server, type \c{mv}, then the current |
| 517 | file name, and then the new file name: |
| 518 | |
| 519 | \c mv oldfile newname |
| 520 | |
| 521 | You can also move the file into a different directory and change the |
| 522 | name: |
| 523 | |
| 524 | \c mv oldfile dir/newname |
| 525 | |
| 526 | To move one or more files into an existing subdirectory, specify the |
| 527 | files (using wildcards if desired), and then the destination |
| 528 | directory: |
| 529 | |
| 530 | \c mv file dir |
| 531 | \c mv file1 dir1/file2 dir2 |
| 532 | \c mv *.c *.h .. |
| 533 | |
| 534 | The \c{rename} and \c{ren} commands work exactly the same way as |
| 535 | \c{mv}. |
| 536 | |
| 537 | \S{psftp-cmd-pling} The \c{!} command: run a local Windows command |
| 538 | |
| 539 | You can run local Windows commands using the \c{!} command. This is |
| 540 | the only PSFTP command that is not subject to the command quoting |
| 541 | rules given in \k{psftp-quoting}. If any command line begins with |
| 542 | the \c{!} character, then the rest of the line will be passed |
| 543 | straight to Windows without further translation. |
| 544 | |
| 545 | For example, if you want to move an existing copy of a file out of |
| 546 | the way before downloading an updated version, you might type: |
| 547 | |
| 548 | \c psftp> !ren myfile.dat myfile.bak |
| 549 | \c psftp> get myfile.dat |
| 550 | |
| 551 | using the Windows \c{ren} command to rename files on your local PC. |
| 552 | |
| 553 | \H{psftp-pubkey} Using public key authentication with PSFTP |
| 554 | |
| 555 | Like PuTTY, PSFTP can authenticate using a public key instead of a |
| 556 | password. There are three ways you can do this. |
| 557 | |
| 558 | Firstly, PSFTP can use PuTTY saved sessions in place of hostnames. |
| 559 | So you might do this: |
| 560 | |
| 561 | \b Run PuTTY, and create a PuTTY saved session (see |
| 562 | \k{config-saving}) which specifies your private key file (see |
| 563 | \k{config-ssh-privkey}). You will probably also want to specify a |
| 564 | username to log in as (see \k{config-username}). |
| 565 | |
| 566 | \b In PSFTP, you can now use the name of the session instead of a |
| 567 | hostname: type \c{psftp sessionname}, where \c{sessionname} is |
| 568 | replaced by the name of your saved session. |
| 569 | |
| 570 | Secondly, you can supply the name of a private key file on the command |
| 571 | line, with the \c{-i} option. See \k{using-cmdline-identity} for more |
| 572 | information. |
| 573 | |
| 574 | Thirdly, PSFTP will attempt to authenticate using Pageant if Pageant |
| 575 | is running (see \k{pageant}). So you would do this: |
| 576 | |
| 577 | \b Ensure Pageant is running, and has your private key stored in it. |
| 578 | |
| 579 | \b Specify a user and host name to PSFTP as normal. PSFTP will |
| 580 | automatically detect Pageant and try to use the keys within it. |
| 581 | |
| 582 | For more general information on public-key authentication, see |
| 583 | \k{pubkey}. |