用python重写bash脚本

我写了一个琐碎的备份脚本,该脚本执行以下操作:
如果今晚是本月的第一天:
保存上个月的档案
全面备份系统
别的:
保存昨晚的差别备份
备份所有相对于本月完整备份的所有变化
万一
我用bash写了这篇文章,尽管它在最后一个小故障工作
几个月..我不满意.."外观和感觉"。
我正在考虑使用OOP策略/策略在Python中重写它。
请指教。
谢谢!
CJ

# 回答1


Chris Jones 我建议您不要将面向对象的编程锤子作为
您唯一的工具,因为然后很容易将每个问题视为
虽然是指甲。
您所描述的似乎在分支的过程序列上似乎很琐碎
使用标准库中的简单类型的步骤。使用功能
封装与概念相关的步骤,并调用这些功能
如您所示,在一个简单的分支中。我认为不需要申请
针对此问题的面向对象的技术。
导入日期
def is_full_backup_required(何时):
"""当""""时,确定是否需要完整的备份
结果= false
如果确定_whether_full_backup_required_for_datetim e(何时):
结果= true
返回结果
def most_recent_incremental_backup(何时):
"""当""""时,返回最新的增量备份
备份= most_recent_backup(何时)
返回备份
def save_previous_fuill_archive(何时):
"""在DateTime之前保存完整的档案 - """"
def save_previous_incremental_archive(何时):
"""在" DateTime"之前保存增量档案 - """"
def perferm_full_backup(系统):
"""完成系统的完整备份"""
def perferm_incremental_backup(系统):
"""对系统的增量备份"
def get_this_system():
"""返回当前备份系统"
system = dester_what_this_system_is()
返回系统
系统= get_this_system()
当= dateTime.dateTime.now()
如果is_full_backup_required(何时):
save_previous_month_archive(何时)
persion_full_backup(系统)
别的:
save_previous_incremental_archive(何时)
percorm_incremental_backup(系统)
除非
一个系统比系统的字符串更复杂
名称或备份比Tarball文件更为复杂。
相反,问题似乎是通过抽象来解决的一个最好的解决
*过程 *的每个点涉及的步骤,就像我在我的
例子。这些功能中的每个功能都可能非常简单,或者可能是
复杂足以产生大量的辅助功能,可能
甚至单独的模块。这似乎比尝试更有用
强迫对象定向到这个程序问题。
- -
\一些早晨,这是不值得在皮革上咀嚼的|
\ straps。
_o__) |
本·芬尼
# 回答2


在消息中,克里斯
琼斯写道:
工程规则1:如果起作用,请不要修复它。
# 回答3


在2008年11月5日星期三17:42:43 +1300,劳伦斯·d'Oliveiro 工程规则1:如果起作用,请不要修复它。
特别是如果它处理您的备份;-)
- -
// jorgen grahn \ x/ snipabacken.se r'lyeh wgah'nagl fhtagn!
# 回答4


2008年11月4日星期二22:11:37 -0500,Chris Jones 这听起来像是克朗的工作(8) - 它是为这些的精确设计的
事情:根据日历事件做事。我想你已经
从Cron中运行您的备份,而不是每晚熬夜
您的东西,那么在您的crontab中更改它
00 1 * * * full_or_incremental_backup
对此?
00 1 1 * *备份-Full
00 1 2-31 * *备份 - 注册
(或者也许两个不​​同的脚本更适合您。)
这样,您就不需要实施自己的逻辑来决定何时
完整的备份。 (您仍然需要一种方法来找到最新的完整备份,
尽管。)
/Jorgen
- -
// jorgen grahn \ x/ snipabacken.se r'lyeh wgah'nagl fhtagn!
# 回答5


Jorgen Grahn在2008年11月5日星期三17:12:08 +0000写道:
特别是如果它处理您的备份;-)
好吧,如果处理您的备份,则无法正常工作。它只是假装直到
您确实需要 * *备份的数据。 ;-)
再见,
marc'blackjack'rintsch
# 回答6


在2008年11月4日星期二,美国东部标准时间11:11:17,本·芬尼写道:
我建议您不要将面向对象的编程锤子作为
您唯一的工具,因为然后很容易将每个问题视为
虽然是指甲。
自然!但是然后..知道何时使用给定的编程技术
是问题的一部分。我有一个配偶,他毁了一个完美的好
厨师的刀花了我大约80.00美元,因为她没有打扰
对于螺丝刀。。谢天谢地,我不必带她去
启动。
这是针对独立笔记本电脑的。
我遇到了设计,编码和cron的麻烦,我的b/u脚本
有两个原因:
1.我希望笔记本电脑定期备份,并查看其他帖子
此线程.."可再现"。
2.我从事这个项目的工作越多,它就越有趣。
沿着"如果会发生什么"线..而琐碎。
现在已经结束了。
但是后来我开始思考..例如我必须扩展我的
从我的单个系统到一个大型"数据中心"的努力
主持人..具有不同的备份政策..如果我必须接受该怎么办
备份运行的帐户时间插槽..必须考虑带宽&
性能问题..媒体成本及其轮换等。
以一种模糊的方式,我有这种感觉,如果一次添加了一台机器,
我当前的脚本不会扩展所有内容 Ell。
我希望我有一定的意义,但这就是为什么,而不是说你的话
因为它,无论如何我倾向于直观地同意。
更喜欢自己尝试一下,并尝试弄清为什么在这种情况下
使用对象取向可能只会添加很多开销,并且
复杂性,没有任何真正的好处。
IOW-我们只会通过自己的错误来学习。
非常感谢您提供此示例骨骼。
好..相对于我牵强的缩放示例。
也许是一个"目标系统" - 一个要备份的一个,也就是..
显而易见的课程..一个人可以找到一些标准或其他标准
将系统分为子组。
实例..并且每个实际系统最终都将成为
这些后者的"子类"。
同样是"备份" ..完整或增量..带有系统名称和一个
日历日期作为自然属性..?
尝试没有伤害?
:-)
松散地引用某人在此线程上的帖子。我已经有了Afaik
"解决"我的问题..那为什么要打扰呢? ..如上所述,这是
从不同角度查看问题的情况,希望
学习一些东西。
乞求一个问题..我如何告诉什么是面向对象的与
程序问题?
另外,对于OOP来说,哪些类别的问题是自然的?
谢谢!
CJ
# 回答7


2008/11/6克里斯·琼斯
练习很大程度上,所以你在做正确的事(前提是你不这样做
将您的 /真实 /备份数据信任到教程程序)。如果您发现
当它只是几种方法时,该程序最为整洁
一堂课,这是一个程序问题。
实际上,从您对问题的描述来看 - 兴趣是
在所有"如果"案件中 - 建议它是规格
问题而不是设计或实施问题,而不是
重新编码它可能值得研究各种方法
要求捕获和规格。
- -
蒂姆·罗(Tim Rowe)
# 回答8


在消息<6n **********@mid.uni-berlin.de>,marc'blackjack'rintsch
写道:
这就是为什么备份系统需要尽可能简单的原因。避免
复杂格式,直接镜像文件系统(例如更新
通过rsync)是最容易验证您可以阅读宝贵数据的最简单的。
# 回答9


在消息中,克里斯
琼斯写道:

蒂姆·罗(Tim Rowe)在2008年11月5日,2008年11月5日下午08:12:40写道:
练习很大程度上,所以你在做正确的事(前提是你不这样做
将您的 /真实 /备份数据信任到教程程序)。如果您发现
当它只是几种方法时,该程序最为整洁
一堂课,这是一个程序问题。
但是您必须经历动作。要"找到"它。
我是其中之一,需要使他们的手变得肮脏。
抽象的力量。我需要做一些建筑物,然后才能 cosify。
# 回答10


在消息中,克里斯
琼斯写道:
快速原型制作没有错。 :)
# 回答11


2008年11月5日,星期三,美国东部标准时间下午09:21:38,劳伦斯·德奥利维罗(Lawrence D'Oliveiro)写道:
这就是为什么备份系统需要尽可能简单的原因。避免
复杂格式,直接镜像文件系统(例如更新
通过rsync)是最容易验证您可以阅读宝贵数据的最简单的。
-http://mail.python.org/mailman/listinfo/python-list
_any_系统和备份系统。
不过有权衡。以上是我的预算超出了我的预算。
不过,不知道您的意思。
少是更好!
# 回答12


2008/11/6 Lawrence d'Oliveiro
当然,这是一个要求捕获方法。实际上,
快速原型制作有很多错误,但是有很多
所有其他要求也捕获了方法,所以
快速原型制作与其他人一起存在。
- -
蒂姆·罗(Tim Rowe)
# 回答13


在消息中,蒂姆Rowe
写道:
听起来丘吉尔对民主的看法:这是最糟糕的制度,
除其他所有。 :)
# 回答14


2008年11月5日,星期三,美国东部标准时间09:23:02,劳伦斯·德奥利维罗(Lawrence D'Oliveiro)写道:

谢谢..
我没有建造任何东西..计划实施。
我是一个新手,弄湿了我的脚。

标签: python

添加新评论