diff --git a/easysftp.go b/easysftp.go
index 2488069..ece8ec0 100644
--- a/easysftp.go
+++ b/easysftp.go
@@ -247,12 +247,32 @@ func (c *Client) Mirror(path string, localParentPath string, resume bool) error
 			return err
 		}
 
-		localFile, err := os.OpenFile(localPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, c.config.FileMode)
+		flags := os.O_RDWR | os.O_CREATE
+
+		if resume {
+			flags |= os.O_APPEND
+		} else {
+			flags |= os.O_TRUNC
+		}
+
+		localFile, err := os.OpenFile(localPath, flags, c.config.FileMode)
 		if err != nil {
 			remoteFile.Close()
 			return err
 		}
 
+		if resume {
+			info, err := localFile.Stat()
+			if err != nil {
+				return err
+			}
+
+			_, err = remoteFile.Seek(info.Size(), 0)
+			if err != nil {
+				return err
+			}
+		}
+
 		_, err = io.Copy(localFile, remoteFile)
 		remoteFile.Close()
 		localFile.Close()