add fallback for copy function (when copy2 fails); add progress output