在创建后在linux上传输时,创建的tar.gz没有执行权限。
目标:在Linux系统上获取文件后,该文件应具有完整权限。
我正在python中使用'tarfile'库来实现这一目标。
import os
import tarfile
with tarfile.open('test.tar.gz', "x:gz") as tar:
tar.add("path_to_src_folder", arcname=os.path.basename("path_to_dir", filter=tarinfo.mode(777))
----------------OR-------------------------------------------
import tarfile
def set_permissions(tarinfo):
tarinfo.mode = 777
return tarinfo
with tarfile.open('test.tar.gz', "x:gz") as tar:
tar.add("path_to_src_folder", filter=set_permissions)
答案 0 :(得分:0)
要更改文件的权限,您只需使用以下代码段
os.chmod('manage.py', 0666)
虽然您必须更改整个文件夹的权限,但下面是递归执行此操作的代码段。
import os
def change_permissions_recursive(path, mode):
for root, dirs, files in os.walk(path, topdown=False):
for dir in [os.path.join(root,d) for d in dirs]:
os.chmod(dir, mode)
for file in [os.path.join(root, f) for f in files]:
os.chmod(file, mode)
change_permissions_recursive('my_folder', 0o777)
为了在创建tar文件时添加/覆盖权限,您问题中的代码段应该可以正常工作。在下面的链接中也提到了这一点,
preserving file permission when creating a tarball with Python's tarfile