python脚本实现:使用tar命令压缩整个目录,包括所有文件和所有目录。由于文件不可读导致压缩失败,需要记录所有失败的文件。
时间: 2023-07-15 08:15:40 浏览: 42
可以使用Python的`tarfile`模块来实现这个功能。以下是一个示例脚本:
```python
import tarfile
import os
def compress_folder(folder_path, output_path):
"""
压缩整个目录,并记录所有压缩失败的文件
"""
failed_files = []
with tarfile.open(output_path, "w:gz") as tar:
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
try:
tar.add(file_path)
except Exception as e:
print(f"Failed to add {file_path}: {e}")
failed_files.append(file_path)
if failed_files:
with open("failed_files.txt", "w") as f:
f.write("\n".join(failed_files))
print(f"Failed to compress {len(failed_files)} files. See failed_files.txt for details.")
else:
print(f"All files are compressed successfully.")
# 示例用法
compress_folder("/path/to/folder", "/path/to/output.tar.gz")
```
这个脚本使用`os.walk`遍历整个目录,将每个文件的路径传递给`tarfile`的`add`方法来添加到压缩文件中。如果添加失败,则记录该文件的路径,并继续遍历下一个文件。最后,如果有任何文件添加失败,则将它们的路径写入一个名为`failed_files.txt`的文件中。否则,打印一个成功的消息。