1Net::SSH2::File(3) User Contributed Perl Documentation Net::SSH2::File(3)
2
3
4
6 Net::SSH2::File - SSH2 SFTP file object
7
9 An SFTP file object is created by the Net::SSH2::SFTP "open" method.
10
11 read ( buffer, size )
12 Read size bytes from the file into a given buffer. Returns number of
13 bytes read, or undef on failure.
14
15 write ( buffer )
16 Write buffer to the remote file.
17
18 The "libssh2_sftp_write" function wrapped by this method has a complex
19 and quite difficult (if not impossible at all) to use API. It tries to
20 hide the packet pipelining being done under the hood in order to attain
21 decent throughput.
22
23 Net::SSH2 can not hide that complexity without negatively affecting the
24 transmission speed so it provides just a thin wrapper for that library
25 function.
26
27 An excerpt from "libssh2_sftp_write" manual page follows:
28
29 WRITE AHEAD
30
31 Starting in libssh2 version 1.2.8, the default behavior of libssh2
32 is to create several smaller outgoing packets for all data you pass
33 to this function and it will return a positive number as soon as the
34 first packet is acknowledged from the server.
35
36 This has the effect that sometimes more data has been sent off but
37 isn't acked yet when this function returns, and when this function
38 is subsequently called again to write more data, libssh2 will
39 immediately figure out that the data is already received remotely.
40
41 In most normal situation this should not cause any problems, but it
42 should be noted that if you've once called libssh2_sftp_write() with
43 data and it returns short, you MUST still assume that the rest of
44 the data might've been cached so you need to make sure you don't
45 alter that data and think that the version you have in your next
46 function invoke will be detected or used.
47
48 The reason for this funny behavior is that SFTP can only send 32K
49 data in each packet and it gets all packets acked individually. This
50 means we cannot use a simple serial approach if we want to reach
51 high performance even on high latency connections. And we want that.
52
53 This is an example of simple file uploading
54
55 use constant BUF_SIZE => 128*1024;
56
57 my $sftp = $ssh2->sftp;
58 open my $fh, '<', '/tmp/doc.txt';
59 my $sf = $sftp->open('doc.txt', O_CREAT|O_WRONLY|O_TRUNC);
60
61 my $buf;
62 while (sysread($fh, $buf, BUF_SIZE)) {
63 while (length $buf) {
64 my $rc = $sf->write($buf);
65 if (!defined($rc)) {
66 $sftp->die_with_error('write error');
67 }
68 # Remove transferred data from the buffer.
69 substr($buf, 0, $rc) = '';
70 }
71 }
72
73 stat
74 Returns file attributes; see Net::SSH2::SFTP::stat.
75
76 setstat ( key, value... )
77 Sets file attributes; see Net::SSH2::SFTP::setstat.
78
79 seek ( offset )
80 Set the file pointer offset.
81
82 tell
83 Returns the current file pointer offset.
84
86 Net::SSH2::SFTP.
87
88 Check Net::SFTP::Foreign for a high level, perlish and easy to use SFTP
89 client module. It can work on top of Net::SSH2 via the
90 Net::SFTP::Foreign::Backend::Net_SSH2 backend module.
91
93 Copyright (C) 2005, 2006 by David B. Robins <dbrobins@cpan.org>;
94
95 Copyright (C) 2015 by Salvador FandiƱo <sfandino@yahoo.com>;
96
97 All rights reserved.
98
99 This library is free software; you can redistribute it and/or modify it
100 under the same terms as Perl itself, either Perl version 5.8.0 or, at
101 your option, any later version of Perl 5 you may have available.
102
103 The documentation for this package contains and excerpt from libssh2
104 manual pages. You can consult the license of the libssh2 project for
105 the conditions regulating the copyright of that part.
106
107
108
109perl v5.38.0 2023-07-21 Net::SSH2::File(3)